rippled
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
ripple::tests::Barrier Struct Reference

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...

Collaboration diagram for ripple::tests::Barrier:
Collaboration graph
[legend]

Public Member Functions

 Barrier (int n)
 
void arrive_and_wait ()
 

Public Attributes

std::mutex mtx
 
std::condition_variable cv
 
int count
 
int const initial
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ Barrier()

ripple::tests::Barrier::Barrier ( int  n)

Definition at line 52 of file IntrusiveShared_test.cpp.

Member Function Documentation

◆ arrive_and_wait()

void ripple::tests::Barrier::arrive_and_wait ( )

Definition at line 57 of file IntrusiveShared_test.cpp.

Member Data Documentation

◆ mtx

std::mutex ripple::tests::Barrier::mtx

Definition at line 47 of file IntrusiveShared_test.cpp.

◆ cv

std::condition_variable ripple::tests::Barrier::cv

Definition at line 48 of file IntrusiveShared_test.cpp.

◆ count

int ripple::tests::Barrier::count

Definition at line 49 of file IntrusiveShared_test.cpp.

◆ initial

int const ripple::tests::Barrier::initial

Definition at line 50 of file IntrusiveShared_test.cpp.