mirror of
https://github.com/boostorg/atomic.git
synced 2026-01-19 16:12:09 +00:00
80cfbfd0de8375a63564c0b28763dce4e255cd7d
The inter-process atomics have ipc_ prefixes: ipc_atomic, ipc_atomic_ref and ipc_atomic_flag. These types are similar to their unprefixed counterparts with the following distinctions: - The operations are provided with an added precondition that is_lock_free() returns true. - All operations, including waiting/notifying operations, are address-free, so the types are suitable for inter-process communication. - The new has_native_wait_notify() operation and always_has_native_wait_notify static constant allow to test if the target platform has native support for address-free waiting/notifying operations. If it does not, a generic implementation is used based on a busy wait. - The new set of capability macros added. The macros are named BOOST_ATOMIC_HAS_NATIVE_<T>_IPC_WAIT_NOTIFY and indicate whether address-free waiting/notifying operations are supported natively for a given type. Additionally, to unify interface and implementation of different components, the has_native_wait_notify() operation and always_has_native_wait_notify static constant were added to non-IPC atomic types as well. Added BOOST_ATOMIC_HAS_NATIVE_<T>_WAIT_NOTIFY capability macros to indicate native support for inter-thread waiting/notifying operations. Also, added is_lock_free() and is_always_lock_free to atomic_flag. This commit adds implementation, docs and tests.
Boost.Atomic, part of collection of the Boost C++ Libraries, implements atomic operations for various CPU architectures, reflecting and extending the standard interface defined in C++11 and later.
Directories
- build - Boost.Atomic build scripts
- doc - QuickBook documentation sources
- include - Interface headers of Boost.Atomic
- src - Compilable source code of Boost.Atomic
- test - Boost.Atomic unit tests
More information
- Documentation
- Report bugs. Be sure to mention Boost version, platform and compiler you're using. A small compilable code sample to reproduce the problem is always good as well.
- Submit your patches as pull requests against develop branch. Note that by submitting patches you agree to license your modifications under the Boost Software License, Version 1.0.
Build status
| Branch | Travis CI | AppVeyor | Test Matrix | Dependencies |
|---|---|---|---|---|
master |
||||
develop |
License
Distributed under the Boost Software License, Version 1.0.
Description
Languages
C++
99.3%
CMake
0.7%
