While changing from Unix epoch time, to calendar time, using the
localtime() function, this works great when you expect the calendar to be
correct for your local timezone, as the computer determines it to be.
However I have been trying to change from epoch time to the tm structure in
different timezones, and have occasionally hit with failure (defaulting
back to the local timezone) in about 1 in 200 attempts.
My code reads:
timespec unix_time = { 1384899797,0}; // recent example
std:string zone("EST");
struct tm new_calendar;
time_t* current_secs = &unix_time.tv_sec;
setenv("TZ", const_cast<char*>(zone.c_str)),1);
new_calender = *localtime(current_secs);
However I am running 7 or 8 threads and they are calling this function too
so collisions to this localtime() library call might be possible.
Is there anyway to have a guaranteed way to do this? Hide this call inside
a Posix mutex?
Will it be necessary to make atomic calls to this routine to insure correct
conversion?
Randall
p.s. I have noticed that apparently the system is setting the TZ variable
back to the local time zone or something is glitching during this time
conversion.
_______________________________________________
PLUG mailing list
[email protected]
http://lists.pdxlinux.org/mailman/listinfo/plug