1#include "boost/atomic.hpp"
2#include "boost/thread.hpp"
3#include <iostream>
4
5using namespace boost;
6
7int main() {
8 atomic<size_t> total(0), failures(0);
9
10#pragma omp parallel shared(total, failures) num_threads(1000)
11 {
12 mutex mtx;
13 condition_variable cond;
14 unique_lock<mutex> lk(mtx);
15 for (int i = 0; i < 500; i++) {
16 ++total;
17 if (cv_status::timeout != cond.wait_for(lock&: lk, d: chrono::milliseconds(10)))
18 ++failures;
19 }
20 }
21 if(failures)
22 std::cout << "There were " << failures << " failures out of " << total << " timed waits." << std::endl;
23 if((100*failures)/total>40)
24 {
25 std::cerr << "This exceeds 10%, so failing the test." << std::endl;
26 return 1;
27 }
28 return 0;
29}
30

source code of boost/libs/thread/test/test_9856.cpp