test_9856.cpp 755 B

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