1// Copyright (C) 2010 Vicente Botet
2//
3// Distributed under the Boost Software License, Version 1.0. (See accompanying
4// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6#define BOOST_THREAD_VERSION 2
7
8#include <boost/thread/thread_only.hpp>
9#include <boost/date_time/posix_time/posix_time_io.hpp>
10#include <assert.h>
11#include <iostream>
12#include <stdlib.h>
13#if defined(BOOST_THREAD_PLATFORM_PTHREAD)
14#include <unistd.h>
15#endif
16
17boost::mutex mtx;
18boost::condition_variable cv;
19
20using namespace boost::posix_time;
21using namespace boost::gregorian;
22int main()
23{
24#if defined(BOOST_THREAD_PLATFORM_PTHREAD)
25
26 for (int i=0; i<3; ++i)
27 {
28 const time_t now_time = ::time(timer: 0);
29 const time_t wait_time = now_time+1;
30 time_t end_time;
31 assert(now_time < wait_time);
32
33 boost::unique_lock<boost::mutex> lk(mtx);
34 //const bool res =
35 (void)cv.timed_wait(m&: lk, abs_time: from_time_t(t: wait_time));
36 end_time = ::time(timer: 0);
37 std::cerr << "now_time =" << now_time << " \n";
38 std::cerr << "end_time =" << end_time << " \n";
39 std::cerr << "wait_time=" << wait_time << " \n";
40 std::cerr << "now_time =" << from_time_t(t: now_time) << " \n";
41 std::cerr << "end_time =" << from_time_t(t: end_time) << " \n";
42 std::cerr << "wait_time=" << from_time_t(t: wait_time) << " \n";
43 std::cerr << end_time - wait_time << " \n";
44 assert(end_time >= wait_time);
45 std::cerr << " OK\n";
46 }
47#endif
48 return 0;
49}
50

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