| 
    rippled
    
   | 
 
Experimentally, we discovered that using std::barrier performs extremely poorly (~1 hour vs ~1 minute to run the test suite) in certain macOS environments. More...

Public Member Functions | |
| Barrier (int n) | |
| void | arrive_and_wait () | 
Public Attributes | |
| std::mutex | mtx | 
| std::condition_variable | cv | 
| int | count | 
| int const | initial | 
Experimentally, we discovered that using std::barrier performs extremely poorly (~1 hour vs ~1 minute to run the test suite) in certain macOS environments.
To unblock our macOS CI pipeline, we replaced std::barrier with a custom mutex-based barrier (Barrier) that significantly improves performance without compromising correctness. For future reference, if we ever consider reintroducing std::barrier, the following configuration is known to exhibit the problem:
Model Name: Mac mini Model Identifier: Mac14,3 Model Number: Z16K000R4LL/A Chip: Apple M2 Total Number of Cores: 8 (4 performance and 4 efficiency) Memory: 24 GB System Firmware Version: 11881.41.5 OS Loader Version: 11881.1.1 Apple clang version 16.0.0 (clang-1600.0.26.3) Target: arm64-apple-darwin24.0.0 Thread model: posix
Definition at line 45 of file IntrusiveShared_test.cpp.
| ripple::tests::Barrier::Barrier | ( | int | n | ) | 
Definition at line 52 of file IntrusiveShared_test.cpp.
| void ripple::tests::Barrier::arrive_and_wait | ( | ) | 
Definition at line 57 of file IntrusiveShared_test.cpp.
| std::mutex ripple::tests::Barrier::mtx | 
Definition at line 47 of file IntrusiveShared_test.cpp.
| std::condition_variable ripple::tests::Barrier::cv | 
Definition at line 48 of file IntrusiveShared_test.cpp.
| int ripple::tests::Barrier::count | 
Definition at line 49 of file IntrusiveShared_test.cpp.
| int const ripple::tests::Barrier::initial | 
Definition at line 50 of file IntrusiveShared_test.cpp.