Repository navigation
runtime: use compare_exchange_weak() in worker queue - #8028
Merged
Merged
Conversation
hawkw
approved these changes
Apr 9, 2026
hawkw
left a comment
Member
There was a problem hiding this comment.
your reasoning seems correct to me!
hawkw
added a commit
that referenced
this pull request
Apr 14, 2026
# 1.52.0 (April 14th, 2026) ## Added - io: `AioSource::register_borrowed` for I/O safety support ([#7992]) - net: add `try_io` function to `unix::pipe` sender and receiver types ([#8030]) ## Added (unstable) - runtime: `Builder::enable_eager_driver_handoff` setting enable eager hand off of the I/O and time drivers before polling tasks ([#8010]) - taskdump: add `trace_with()` for customized task dumps ([#8025]) - taskdump: allow `impl FnMut()` in `trace_with`` instead of just `fn()` ([#8040]) - fs: support `io_uring` in `AsyncRead` for `File` ([#7907]) ## Changed - runtime: improve `spawn_blocking` scalability with sharded queue ([#7757]) - runtime: use `compare_exchange_weak()` in worker queue ([#8028]) ## Fixed - runtime: overflow second half of tasks when local queue is filled instead of first half ([#8029]) ## Documented - docs: fix typo in `oneshot::Sender::send` docs ([#8026]) - docs: hide #[tokio::main] attribute in the docs of `sync::watch` ([#8035]) - net: add docs on `ConnectionRefused` errors with UDP sockets ([#7870]) [#7757]: #7757 [#7870]: #7870 [#7907]: #7907 [#7992]: #7992 [#8010]: #8010 [#8025]: #8025 [#8026]: #8026 [#8028]: #8028 [#8029]: #8029 [#8030]: #8030 [#8035]: #8035 [#8040]: #8040
Merged
hawkw
added a commit
that referenced
this pull request
Apr 14, 2026
# 1.52.0 (April 14th, 2026) ## Added - io: `AioSource::register_borrowed` for I/O safety support ([#7992]) - net: add `try_io` function to `unix::pipe` sender and receiver types ([#8030]) ## Added (unstable) - runtime: `Builder::enable_eager_driver_handoff` setting enable eager hand off of the I/O and time drivers before polling tasks ([#8010]) - taskdump: add `trace_with()` for customized task dumps ([#8025]) - taskdump: allow `impl FnMut()` in `trace_with` instead of just `fn()` ([#8040]) - fs: support `io_uring` in `AsyncRead` for `File` ([#7907]) ## Changed - runtime: improve `spawn_blocking` scalability with sharded queue ([#7757]) - runtime: use `compare_exchange_weak()` in worker queue ([#8028]) ## Fixed - runtime: overflow second half of tasks when local queue is filled instead of first half ([#8029]) ## Documented - docs: fix typo in `oneshot::Sender::send` docs ([#8026]) - docs: hide #[tokio::main] attribute in the docs of `sync::watch` ([#8035]) - net: add docs on `ConnectionRefused` errors with UDP sockets ([#7870]) [#7757]: #7757 [#7870]: #7870 [#7907]: #7907 [#7992]: #7992 [#8010]: #8010 [#8025]: #8025 [#8026]: #8026 [#8028]: #8028 [#8029]: #8029 [#8030]: #8030 [#8035]: #8035 [#8040]: #8040
eleboucher
pushed a commit
to eleboucher/towonel
that referenced
this pull request
Apr 18, 2026
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [tokio](https://tokio.rs) ([source](https://github.com/tokio-rs/tokio)) | workspace.dependencies | minor | `1.51.1` β `1.52.1` | --- ### Release Notes <details> <summary>tokio-rs/tokio (tokio)</summary> ### [`v1.52.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.52.1): Tokio v1.52.1 [Compare Source](tokio-rs/tokio@tokio-1.52.0...tokio-1.52.1) ### 1.52.1 (April 16th, 2026) #### Fixed - runtime: revert [#​7757] to fix [a regression][#​8056] that causes `spawn_blocking` to hang ([#​8057]) [#​7757]: tokio-rs/tokio#7757 [#​8056]: tokio-rs/tokio#8056 [#​8057]: tokio-rs/tokio#8057 ### [`v1.52.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.52.0): Tokio v1.52.0 [Compare Source](tokio-rs/tokio@tokio-1.51.1...tokio-1.52.0) ### 1.52.0 (April 14th, 2026) #### Added - io: `AioSource::register_borrowed` for I/O safety support ([#​7992]) - net: add `try_io` function to `unix::pipe` sender and receiver types ([#​8030]) #### Added (unstable) - runtime: `Builder::enable_eager_driver_handoff` setting enable eager hand off of the I/O and time drivers before polling tasks ([#​8010]) - taskdump: add `trace_with()` for customized task dumps ([#​8025]) - taskdump: allow `impl FnMut()` in `trace_with` instead of just `fn()` ([#​8040]) - fs: support `io_uring` in `AsyncRead` for `File` ([#​7907]) #### Changed - runtime: improve `spawn_blocking` scalability with sharded queue ([#​7757]) - runtime: use `compare_exchange_weak()` in worker queue ([#​8028]) #### Fixed - runtime: overflow second half of tasks when local queue is filled instead of first half ([#​8029]) #### Documented - docs: fix typo in `oneshot::Sender::send` docs ([#​8026]) - docs: hide #\[tokio::main] attribute in the docs of `sync::watch` ([#​8035]) - net: add docs on `ConnectionRefused` errors with UDP sockets ([#​7870]) [#​7757]: tokio-rs/tokio#7757 [#​7870]: tokio-rs/tokio#7870 [#​7907]: tokio-rs/tokio#7907 [#​7992]: tokio-rs/tokio#7992 [#​8010]: tokio-rs/tokio#8010 [#​8025]: tokio-rs/tokio#8025 [#​8026]: tokio-rs/tokio#8026 [#​8028]: tokio-rs/tokio#8028 [#​8029]: tokio-rs/tokio#8029 [#​8030]: tokio-rs/tokio#8030 [#​8035]: tokio-rs/tokio#8035 [#​8040]: tokio-rs/tokio#8040 </details> --- ### Configuration π **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). π¦ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. π **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJ0eXBlL21pbm9yIl19--> Reviewed-on: https://git.erwanleboucher.dev/eleboucher/towonel/pulls/11
ahacop
added a commit
to ahacop/erwindb
that referenced
this pull request
Sep 28, 2026
[cb skip] Changes in 1.53.1 ----------------- 1.53.1 (July 20th, 2026) ------------------------ Fixed ----- - signal: restore MSRV by removing `OnceLock::wait` from the Windows handler ([#8300]) Fixed (unstable) ---------------- - time: fix alt timer cancellation and insertion race ([#8252]) Documented ---------- - runtime: remove dead link definition in Runtime::block_on ([#8301]) [#8252]: tokio-rs/tokio#8252 [#8300]: tokio-rs/tokio#8300 [#8301]: tokio-rs/tokio#8301 Changes in 1.53.0 ----------------- 1.53.0 (July 17th, 2026) ------------------------ Added ----- - fs: implement `From<OwnedFd>` and `From<OwnedHandle>` for `File` ([#8266]) - metrics: add task schedule latency metric ([#7986]) - net: add `SocketAddr` methods to Unix sockets ([#8144]) Changed ------- - io: add `#[inline]` to IO trait impls for in-memory types ([#8242]) - net: implement UCred::pid on FreeBSD ([#8086]) - net: support Nuttx target os ([#8259]) - signal: refactor global variables on Windows ([#8231]) - sync: `mpsc::{Receiver,UnboundedReceiver}` now drops waker on drop, even if there are still senders ([#8095]) - taskdump: support taskdumps on s390x ([#8192]) - time: add `#[track_caller]` to `timeout_at()` ([#8077]) - time: consolidate mutex locks on spurious poll ([#8124]) - time: defer waker clone on spurious poll ([#8107]) - time: move lazy-registration state into `Sleep` ([#8132]) - tracing: remove unnecessary span clone ([#8126]) Fixed ----- - io: do not treat zero-length reads as EOF in `Chain` ([#8251]) - net: use getpeereid for QNX peer credentials ([#8270]) - runtime: avoid illegal state in `FastRand` ([#8078]) - sync: wake mpsc receiver when a queued `reserve[_many]` returns permits ([#8260]) - taskdump: skip double wake on `Trace::capture`/`Trace::trace_with` ([#8043]) - time: avoid stack overflow in runtime constructor ([#8093]) - time (alt timer): ensure timers stay in the same runtime after `.reset()` ([#8169]) IO uring (unstable) ------------------- - fs: use io-uring for `fs::try_exists` ([#8080]) - fs: use io-uring for renaming files ([#7800]) - rt: flush io-uring CQE in case of CQE overflow ([#8277]) Documented ---------- - docs: clarify cancel safety wording ([#8181]) - fs: clarify `create_dir_all` succeeds if path exists ([#8149]) - io: add warning about stdout reordering with multiple handles ([#8276]) - net: document pipe `try_read*`/`try_write*` readiness behavior ([#8032]) - runtime: document interaction with fork() ([#8202]) - sync: clarify broadcast lagging semantics ([#8239]) - sync: document memory ordering guarantees for Semaphore ([#8119]) - task: explain why `yield_now` defers its waker ([#8254]) - time: add panic docs to `timeout_at()` ([#8077]) - time: fix reversed poll order in timeout doc ([#8214]) [#7800]: tokio-rs/tokio#7800 [#7986]: tokio-rs/tokio#7986 [#8032]: tokio-rs/tokio#8032 [#8043]: tokio-rs/tokio#8043 [#8077]: tokio-rs/tokio#8077 [#8078]: tokio-rs/tokio#8078 [#8080]: tokio-rs/tokio#8080 [#8086]: tokio-rs/tokio#8086 [#8093]: tokio-rs/tokio#8093 [#8095]: tokio-rs/tokio#8095 [#8107]: tokio-rs/tokio#8107 [#8119]: tokio-rs/tokio#8119 [#8124]: tokio-rs/tokio#8124 [#8126]: tokio-rs/tokio#8126 [#8132]: tokio-rs/tokio#8132 [#8144]: tokio-rs/tokio#8144 [#8149]: tokio-rs/tokio#8149 [#8169]: tokio-rs/tokio#8169 [#8181]: tokio-rs/tokio#8181 [#8192]: tokio-rs/tokio#8192 [#8193]: tokio-rs/tokio#8193 [#8202]: tokio-rs/tokio#8202 [#8214]: tokio-rs/tokio#8214 [#8231]: tokio-rs/tokio#8231 [#8239]: tokio-rs/tokio#8239 [#8242]: tokio-rs/tokio#8242 [#8251]: tokio-rs/tokio#8251 [#8254]: tokio-rs/tokio#8254 [#8259]: tokio-rs/tokio#8259 [#8260]: tokio-rs/tokio#8260 [#8266]: tokio-rs/tokio#8266 [#8270]: tokio-rs/tokio#8270 [#8276]: tokio-rs/tokio#8276 [#8277]: tokio-rs/tokio#8277 Changes in 1.52.4 ----------------- 1.52.4 (July 16th, 2026) ------------------------ Fixed ----- - runtime: don't skip the driver when `before_park` schedules work ([#8222]) Fixed (unstable) ---------------- - taskdump: remove crate disambiguators from output ([#8264]) [#8264]: tokio-rs/tokio#8264 [#8222]: tokio-rs/tokio#8222 Changes in 1.52.3 ----------------- 1.52.3 (May 8th, 2026) ---------------------- Fixed ----- * sync: fix underflow in mpsc channel `len()` ([#8062]) * sync: notify receivers in mpsc `OwnedPermit::release()` method ([#8075]) * sync: require that an `RwLock` has `max_readers != 0` ([#8076]) * sync: return `Empty` from `try_recv()` when mpsc is closed with outstanding permits ([#8074]) [#8062]: tokio-rs/tokio#8062 [#8074]: tokio-rs/tokio#8074 [#8075]: tokio-rs/tokio#8075 [#8076]: tokio-rs/tokio#8076 Changes in 1.52.2 ----------------- 1.52.2 (May 4th, 2026) ---------------------- This release reverts the LIFO slot stealing change introduced in 1.51.0 ([#7431]), due to [its performance impact][#8065]. ([#8100]) [#7431]: tokio-rs/tokio#7431 [#8065]: tokio-rs/tokio#8065 [#8100]: tokio-rs/tokio#8100 Changes in 1.52.1 ----------------- 1.52.1 (April 16th, 2026) ------------------------- Fixed ----- - runtime: revert [#7757] to fix [a regression][#8056] that causes `spawn_blocking` to hang ([#8057]) [#7757]: tokio-rs/tokio#7757 [#8056]: tokio-rs/tokio#8056 [#8057]: tokio-rs/tokio#8057 Changes in 1.52.0 ----------------- 1.52.0 (April 14th, 2026) ------------------------- Added ----- - io: `AioSource::register_borrowed` for I/O safety support ([#7992]) - net: add `try_io` function to `unix::pipe` sender and receiver types ([#8030]) Added (unstable) ---------------- - runtime: `Builder::enable_eager_driver_handoff` setting enable eager hand off of the I/O and time drivers before polling tasks ([#8010]) - taskdump: add `trace_with()` for customized task dumps ([#8025]) - taskdump: allow `impl FnMut()` in `trace_with` instead of just `fn()` ([#8040]) - fs: support `io_uring` in `AsyncRead` for `File` ([#7907]) Changed ------- - runtime: improve `spawn_blocking` scalability with sharded queue ([#7757]) - runtime: use `compare_exchange_weak()` in worker queue ([#8028]) Fixed ----- - runtime: overflow second half of tasks when local queue is filled instead of first half ([#8029]) Documented ---------- - docs: fix typo in `oneshot::Sender::send` docs ([#8026]) - docs: hide #[tokio::main] attribute in the docs of `sync::watch` ([#8035]) - net: add docs on `ConnectionRefused` errors with UDP sockets ([#7870]) [#7757]: tokio-rs/tokio#7757 [#7870]: tokio-rs/tokio#7870 [#7907]: tokio-rs/tokio#7907 [#7992]: tokio-rs/tokio#7992 [#8010]: tokio-rs/tokio#8010 [#8025]: tokio-rs/tokio#8025 [#8026]: tokio-rs/tokio#8026 [#8028]: tokio-rs/tokio#8028 [#8029]: tokio-rs/tokio#8029 [#8030]: tokio-rs/tokio#8030 [#8035]: tokio-rs/tokio#8035 [#8040]: tokio-rs/tokio#8040 Changes in 1.51.4 ----------------- 1.51.4 (July 16th, 2026) ------------------------ Fixed ----- - runtime: don't skip the driver when `before_park` schedules work ([#8222]) [#8222]: tokio-rs/tokio#8222 Changes in 1.51.3 ----------------- 1.51.3 (May 8th, 2026) ---------------------- Fixed ----- * sync: fix underflow in mpsc channel `len()` ([#8062]) * sync: notify receivers in mpsc `OwnedPermit::release()` method ([#8075]) * sync: require that an `RwLock` has `max_readers != 0` ([#8076]) * sync: return `Empty` from `try_recv()` when mpsc is closed with outstanding permits ([#8074]) [#8062]: tokio-rs/tokio#8062 [#8074]: tokio-rs/tokio#8074 [#8075]: tokio-rs/tokio#8075 [#8076]: tokio-rs/tokio#8076 Changes in 1.51.2 ----------------- 1.51.2 (May 4th, 2026) ---------------------- This release reverts the LIFO slot stealing change introduced in 1.51.0 ([#7431]), due to [its performance impact][#8065]. ([#8100]) [#7431]: tokio-rs/tokio#7431 [#8065]: tokio-rs/tokio#8065 [#8100]: tokio-rs/tokio#8100 Changes in 1.51.1 ----------------- 1.51.1 (April 8th, 2026) ------------------------ Fixed ----- - sync: fix semaphore reopens after forget ([#8021]) - net: surface errors from `SO_ERROR` on `recv` for UDP sockets on Linux ([#8001]) Fixed (unstable) ---------------- - metrics: fix `worker_local_schedule_count` test ([#8008]) - rt: do not leak fd when cancelling io\_uring open operation ([#7983]) [#7983]: tokio-rs/tokio#7983 [#8001]: tokio-rs/tokio#8001 [#8008]: tokio-rs/tokio#8008 [#8021]: tokio-rs/tokio#8021 Changes in 1.51.0 ----------------- 1.51.0 (April 3rd, 2026) ------------------------ Added ----- - net: implement `get_peer_cred` on Hurd ([#7989]) - runtime: add `tokio::runtime::worker_index()` ([#7921]) - runtime: add runtime name ([#7924]) - runtime: stabilize `LocalRuntime` ([#7557]) - wasm: add wasm32-wasip2 networking support ([#7933]) Changed ------- - runtime: steal tasks from the LIFO slot ([#7431]) Fixed ----- - docs: do not show "Available on non-loom only." doc label ([#7977]) - macros: improve overall macro hygiene ([#7997]) - sync: fix `notify_waiters` priority in `Notify` ([#7996]) - sync: fix panic in `Chan::recv_many` when called with non-empty vector on closed channel ([#7991]) [#7431]: tokio-rs/tokio#7431 [#7557]: tokio-rs/tokio#7557 [#7921]: tokio-rs/tokio#7921 [#7924]: tokio-rs/tokio#7924 [#7933]: tokio-rs/tokio#7933 [#7977]: tokio-rs/tokio#7977 [#7989]: tokio-rs/tokio#7989 [#7991]: tokio-rs/tokio#7991 [#7996]: tokio-rs/tokio#7996 [#7997]: tokio-rs/tokio#7997 Changes in 1.50.0 ----------------- 1.50.0 (Mar 3rd, 2026) ---------------------- Added ----- - net: add `TcpStream::set_zero_linger` ([#7837]) - rt: add `is_rt_shutdown_err` ([#7771]) Changed ------- - io: add optimizer hint that `memchr` returns in-bounds pointer ([#7792]) - io: implement vectored writes for `write_buf` ([#7871]) - runtime: panic when `event_interval` is set to 0 ([#7838]) - runtime: shorten default thread name to fit in Linux limit ([#7880]) - signal: remember the result of `SetConsoleCtrlHandler` ([#7833]) - signal: specialize windows `Registry` ([#7885]) Fixed ----- - io: always cleanup `AsyncFd` registration list on deregister ([#7773]) - macros: remove (most) local `use` declarations in `tokio::select!` ([#7929]) - net: fix `GET_BUF_SIZE` constant for `target_os = "android"` ([#7889]) - runtime: avoid redundant unpark in current_thread scheduler ([#7834]) - runtime: don't park in `current_thread` if `before_park` defers waker ([#7835]) - io: fix write readiness on ESP32 on short writes ([#7872]) - runtime: wake deferred tasks before entering `block_in_place` ([#7879]) - sync: drop rx waker when oneshot receiver is dropped ([#7886]) - runtime: fix double increment of `num_idle_threads` on shutdown ([#7910], [#7918], [#7922]) Unstable -------- - fs: check for io-uring opcode support ([#7815]) - runtime: avoid lock acquisition after uring init ([#7850]) Documented ---------- - docs: update outdated unstable features section ([#7839]) - io: clarify the behavior of `AsyncWriteExt::shutdown()` ([#7908]) - io: explain how to flush stdout/stderr ([#7904]) - io: fix incorrect and confusing `AsyncWrite` documentation ([#7875]) - rt: clarify the documentation of `Runtime::spawn` ([#7803]) - rt: fix missing quotation in docs ([#7925]) - runtime: correct the default thread name in docs ([#7896]) - runtime: fix `event_interval` doc ([#7932]) - sync: clarify RwLock fairness documentation ([#7919]) - sync: clarify that `recv` returns `None` once closed and no more messages ([#7920]) - task: clarify when to use `spawn_blocking` vs dedicated threads ([#7923]) - task: doc that task drops before `JoinHandle` completion ([#7825]) - signal: guarantee that listeners never return `None` ([#7869]) - task: fix task module feature flags in docs ([#7891]) - task: fix two typos ([#7913]) - task: improve the docs of `Builder::spawn_local` ([#7828]) - time: add docs about auto-advance and when to use sleep ([#7858]) - util: fix typo in docs ([#7926]) [#7771]: tokio-rs/tokio#7771 [#7773]: tokio-rs/tokio#7773 [#7792]: tokio-rs/tokio#7792 [#7803]: tokio-rs/tokio#7803 [#7815]: tokio-rs/tokio#7815 [#7825]: tokio-rs/tokio#7825 [#7828]: tokio-rs/tokio#7828 [#7833]: tokio-rs/tokio#7833 [#7834]: tokio-rs/tokio#7834 [#7835]: tokio-rs/tokio#7835 [#7837]: tokio-rs/tokio#7837 [#7838]: tokio-rs/tokio#7838 [#7839]: tokio-rs/tokio#7839 [#7850]: tokio-rs/tokio#7850 [#7858]: tokio-rs/tokio#7858 [#7869]: tokio-rs/tokio#7869 [#7871]: tokio-rs/tokio#7871 [#7872]: tokio-rs/tokio#7872 [#7875]: tokio-rs/tokio#7875 [#7879]: tokio-rs/tokio#7879 [#7880]: tokio-rs/tokio#7880 [#7885]: tokio-rs/tokio#7885 [#7886]: tokio-rs/tokio#7886 [#7889]: tokio-rs/tokio#7889 [#7891]: tokio-rs/tokio#7891 [#7896]: tokio-rs/tokio#7896 [#7904]: tokio-rs/tokio#7904 [#7908]: tokio-rs/tokio#7908 [#7910]: tokio-rs/tokio#7910 [#7913]: tokio-rs/tokio#7913 [#7918]: tokio-rs/tokio#7918 [#7919]: tokio-rs/tokio#7919 [#7920]: tokio-rs/tokio#7920 [#7922]: tokio-rs/tokio#7922 [#7923]: tokio-rs/tokio#7923 [#7925]: tokio-rs/tokio#7925 [#7926]: tokio-rs/tokio#7926 [#7929]: tokio-rs/tokio#7929 [#7932]: tokio-rs/tokio#7932 Release notes: - 1.53.1: https://github.com/tokio-rs/tokio/releases/tag/tokio-1.53.1 - 1.53.0: https://github.com/tokio-rs/tokio/releases/tag/tokio-1.53.0 - 1.52.4: https://github.com/tokio-rs/tokio/releases/tag/tokio-1.52.4 - 1.52.3: https://github.com/tokio-rs/tokio/releases/tag/tokio-1.52.3 - 1.52.2: https://github.com/tokio-rs/tokio/releases/tag/tokio-1.52.2 - 1.52.1: https://github.com/tokio-rs/tokio/releases/tag/tokio-1.52.1 - 1.52.0: https://github.com/tokio-rs/tokio/releases/tag/tokio-1.52.0 - 1.51.4: https://github.com/tokio-rs/tokio/releases/tag/tokio-1.51.4 - 1.51.3: https://github.com/tokio-rs/tokio/releases/tag/tokio-1.51.3 - 1.51.2: https://github.com/tokio-rs/tokio/releases/tag/tokio-1.51.2 - 1.51.1: https://github.com/tokio-rs/tokio/releases/tag/tokio-1.51.1 - 1.51.0: https://github.com/tokio-rs/tokio/releases/tag/tokio-1.51.0 - 1.50.0: https://github.com/tokio-rs/tokio/releases/tag/tokio-1.50.0 --- Transitive Dependencies ----------------------- - libc (0.2.180 -> 0.2.189) - mio (1.1.1 -> 1.2.3) - socket2 (0.6.2 -> 0.6.5) - syn 3.0.6 (added) - tokio-macros (2.6.0 -> 2.7.2) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I was looking at this code, and I realized there is no reason to use the strong CAS in these cases. If the CAS fails spuriously even though the old value is unchanged, we can just go around the loop and try again, instead of letting the
compare_exchange()function's internal loop run again.