-
-
Notifications
You must be signed in to change notification settings - Fork 5.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support Threads.Atomic{Bool} #26542
Comments
Oh, actually, I just came across this comment when checking to see how atomics are implemented: Line 29 in 84e68f3
# TODO: Support Bool, Ptr )
So I guess this is an already-desired TODO. I didn't find an Issue for it, but sorry if this is a duplicate. That said, would implementing this be more complicated than simply adding Line 30 in 84e68f3
to const atomictypes = (inttypes..., floattypes..., Bool) ?
|
Ah, so I guess one complication would be deciding what to do about the arithmetic For example, what should We could define |
Adds `Bool` to list of types supported by `Atomic{T}`. Defines all `atomic_*!` for `Bool`, except `atomic_add!` and `atomic_sub!` since `add(::Bool, ::Bool)` returns an `Int`. Also adds tests for those methods to `test/threads.jl`.
Adds `Bool` to list of types supported by `Atomic{T}`. Defines all `atomic_*!` for `Bool`, except `atomic_add!` and `atomic_sub!` since `add(::Bool, ::Bool)` returns an `Int`. Also adds tests for those methods to `test/threads.jl`.
Adds `Bool` to list of types supported by `Atomic{T}`. Defines all `atomic_*!` for `Bool`, except `atomic_add!` and `atomic_sub!` since `add(::Bool, ::Bool)` returns an `Int`. Also adds tests for those methods to `test/threads.jl`.
Nice work, appreciated! |
haha thanks. in the PR, I just basically did what i described here in the issue: added |
* origin/master: (22 commits) separate `isbitstype(::Type)` from `isbits` (#26850) bugfix for regex matches ending with non-ASCII (#26831) [NewOptimizer] track inbounds state as a per-statement flag change default LOAD_PATH and DEPOT_PATH (#26804, fix #25709) Change url scheme to https (#26835) [NewOptimizer] inlining: Refactor todo object inference: enable CodeInfo method_for_inference_limit_heuristics support (#26822) [NewOptimizer] Fix _apply elision (#26821) add test case from issue #26607, cfunction with no args (#26838) add `do` in front-end deparser. fixes #17781 (#26840) Preserve CallInst metadata in LateLowerGCFrame pass. Improve differences from R documentation (#26810) reserve syntax that could be used for computed field types (#18466) (#26816) Add support for Atomic{Bool} (Fix #26542). (#26597) Remove argument restriction on dims2string and inds2string (#26799) (#26817) remove some unnecessary `eltype` methods (#26791) optimize: ensure merge_value_ssa doesn't drop PiNodes inference: improve tmerge for Conditional and Const ensure more iterators stay type-stable code loading docs (#26787) ...
Could we add
Bool
to the list of types supported byThreads.Atomic
? Currently atomics only supports int types and float types, but I don't see any reason why it couldn't also support booleans! :)For now as a workaround, you have to use an
x = Threads.Atomic{UInt8}
and always checkif x != 0
instead of justif x
.I couldn't find either a github issue or discourse thread about this already, sorry if this is a duplicate. Thanks! :)
The text was updated successfully, but these errors were encountered: