aboutsummaryrefslogtreecommitdiffstats
path: root/common/atomic.h
Commit message (Collapse)AuthorAgeFilesLines
* Add a missing returnChris Robinson2024-01-031-1/+1
|
* Properly handle the atomic unique_ptr type deleterChris Robinson2024-01-021-13/+16
|
* Use an atomic exchange to destruct the atomic unique_ptrChris Robinson2024-01-021-1/+5
| | | | | | | | | | A relaxed load isn't required to synchronize with other threads. A thread could exchange the held pointer, and a subsequent load is allowed to get either the pre- or post-swap value (it's only required the value be "complete", not junk or some mix of the old and new value). An exchange, however, is guaranteed to synchronize with itself. If an atomic variable has the value 0, for example, with one thread swapping in the value 1 and another the value 2, the two threads are guaranteed to not both get 0 from the swap.
* Make and use a (simple) atomic unique_ptrChris Robinson2024-01-011-0/+66
|
* Remove some unnecessary atomic wrappersChris Robinson2023-12-031-8/+5
|
* Remove unused atomic_invflagChris Robinson2022-02-231-19/+0
|
* Inherit the atomic_flag constructors in atomic_invflagChris Robinson2022-02-061-3/+1
|
* Make an inverted atomic flag type and use itChris Robinson2021-04-151-0/+21
| | | | | | | | The inverted atomic flag replaces test_and_set+clear with test_and_clear+set, essentially inverting the flag status. This makes more logical sense for flagging dirty state, which is less confusing than flagging clean state. The one caveat is ATOMIC_FLAG_INIT (or default construction in C++20) initializes the state to true rather than false.
* Add a common base for auto-deleting ref-counted objectsChris Robinson2019-08-011-8/+8
| | | | Which will also work as the basis for a future intrusive_ptr
* Get rid of the last ATOMIC macro usesChris Robinson2018-11-261-15/+0
|
* Remove some unused macrosChris Robinson2018-11-261-7/+0
|
* Avoid using the ATOMIC() macroChris Robinson2018-11-261-2/+0
|
* Avoid using ATOMIC_INITChris Robinson2018-11-261-3/+1
|
* Remove the ATOMIC_THREAD_FENCE macroChris Robinson2018-11-191-3/+0
|
* Remove the CONST_CAST hackChris Robinson2018-11-191-12/+0
|
* Remove unnecessary using statementsChris Robinson2018-11-191-35/+16
|
* Remove the atomic exchange macrosChris Robinson2018-11-191-10/+0
|
* Simplify the RefCount typeChris Robinson2018-11-191-9/+8
|
* Replace ATOMIC_REPLACE_HEAD with an inline functionChris Robinson2018-11-191-7/+9
|
* Remove the pointer-specific atomic exchange macrosChris Robinson2018-11-181-15/+1
|
* Remove unused headers and checksChris Robinson2018-11-171-3/+0
|
* Always use C++11 atomicsChris Robinson2018-11-171-336/+2
|
* Avoid using ATOMIC_FLAGChris Robinson2018-11-131-30/+0
| | | | | Although it cant potentially be better than a regular atomic, it presents compatibility issues when non-C11 atomics are mixed with C++
* Fix some backup atomic macrosChris Robinson2018-10-311-4/+4
|
* Workaround C++ compatiility issues for atomic.hChris Robinson2018-10-291-5/+49
| | | | | | | | | | This isn't wholly correct since neither C11 or C++11 guarantee compatibility between atomic implementations. It's desired behavior and mostly works, see: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0943r1.html Alignment issues can be fixed with manual alignas() specifications, should the need arise.
* Slightly relax the memory order for ref countersChris Robinson2018-03-261-3/+3
|
* Fix up some types for MSVCChris Robinson2018-01-111-1/+2
|
* Avoid including alMain.h in ringbuffer.cChris Robinson2018-01-111-0/+13
|
* Move internal headers out of the include directoryChris Robinson2017-04-141-0/+425