//change this if you want to allow oversubscription of the system, by default only the range {1-(system size)} is tested
#define FOR_GAUNTLET(x) for(unsigned x = (std::min)(std::thread::hardware_concurrency()*8,unsigned(sizeof(next_table)/sizeof(unsigned))); x; x = next_table[x-1])
//set this to override the benchmark of barriers to use OMP barriers instead of n3998 std::barrier
//#define USEOMP
#if defined(__SYNCHRONIC_COMPATIBLE)
#define PREFIX "futex-"
#else
#define PREFIX "backoff-"
#endif
//this test uses a custom Mersenne twister to eliminate implementation variation