]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | #include "boost/atomic.hpp" |
2 | #include "boost/thread.hpp" | |
3 | #include <iostream> | |
4 | ||
5 | using namespace boost; | |
6 | ||
7 | int main() { | |
8 | atomic<size_t> total(0), failures(0); | |
b32b8144 | 9 | |
7c673cae FG |
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(lk, chrono::milliseconds(10))) | |
18 | ++failures; | |
19 | } | |
20 | } | |
21 | if(failures) | |
22 | std::cout << "There were " << failures << " failures out of " << total << " timed waits." << std::endl; | |
b32b8144 | 23 | if((100*failures)/total>40) |
7c673cae FG |
24 | { |
25 | std::cerr << "This exceeds 10%, so failing the test." << std::endl; | |
26 | return 1; | |
27 | } | |
28 | return 0; | |
b32b8144 | 29 | } |