File: test_6130.cpp

package info (click to toggle)
boost1.83 1.83.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 545,632 kB
  • sloc: cpp: 3,857,086; xml: 125,552; ansic: 34,414; python: 25,887; asm: 5,276; sh: 4,799; ada: 1,681; makefile: 1,629; perl: 1,212; pascal: 1,139; sql: 810; yacc: 478; ruby: 102; lisp: 24; csh: 6
file content (49 lines) | stat: -rw-r--r-- 1,430 bytes parent folder | download | duplicates (15)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Copyright (C) 2010 Vicente Botet
//
//  Distributed under the Boost Software License, Version 1.0. (See accompanying
//  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

#define BOOST_THREAD_VERSION 2

#include <boost/thread/thread_only.hpp>
#include <boost/date_time/posix_time/posix_time_io.hpp>
#include <assert.h>
#include <iostream>
#include <stdlib.h>
#if defined(BOOST_THREAD_PLATFORM_PTHREAD)
#include <unistd.h>
#endif

boost::mutex mtx;
boost::condition_variable cv;

using namespace boost::posix_time;
using namespace boost::gregorian;
int main()
{
#if defined(BOOST_THREAD_PLATFORM_PTHREAD)

  for (int i=0; i<3; ++i)
  {
    const time_t now_time = ::time(0);
    const time_t wait_time = now_time+1;
    time_t end_time;
    assert(now_time < wait_time);

    boost::unique_lock<boost::mutex> lk(mtx);
    //const bool res =
    (void)cv.timed_wait(lk, from_time_t(wait_time));
    end_time = ::time(0);
    std::cerr << "now_time =" << now_time << " \n";
    std::cerr << "end_time =" << end_time << " \n";
    std::cerr << "wait_time=" << wait_time << " \n";
    std::cerr << "now_time =" << from_time_t(now_time) << " \n";
    std::cerr << "end_time =" << from_time_t(end_time) << " \n";
    std::cerr << "wait_time=" << from_time_t(wait_time) << " \n";
    std::cerr << end_time - wait_time << " \n";
    assert(end_time >= wait_time);
    std::cerr << " OK\n";
  }
#endif
  return 0;
}