Question

I try to find a thread-safe way to get local time. From boost example, I got this:

#include "boost/date_time/posix_time/posix_time.hpp"
  #include <iostream>

  int
  main() 
  {
    using namespace boost::posix_time;
    using namespace boost::gregorian;

    //get the current time from the clock -- one second resolution
    ptime now = second_clock::local_time();
    //Get the date part out of the time
    date today = now.date();
    date tommorrow = today + days(1);
    ptime tommorrow_start(tommorrow); //midnight 

    //iterator adds by one hour
    time_iterator titr(now,hours(1)); 
    for (; titr < tommorrow_start; ++titr) {
      std::cout << to_simple_string(*titr) << std::endl;
    }

    time_duration remaining = tommorrow_start - now;
    std::cout << "Time left till midnight: " 
              << to_simple_string(remaining) << std::endl;
    return 0;
  }

But I didn't know if it can be used in multi-threading environment?

Was it helpful?

Solution

Yes, of your platform has support for it:

Date-time now uses reentrant POSIX functions on those platforms that support them when BOOST_HAS_THREADS is defined.

From here

BOOST_HAS_THREADS is basically always defined these days. You can check your platform's POSIX support if you doubt things.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top