Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the Windows equivalent of the Unix function gmtime_r?

I am porting some Unix code into Windows Visual Studio 2010. I have run into the following line

gmtime_r(&now, &tm_time);

I found that gmtime_r() is a standard Unix function, but I am hoping to find the Windows equivalent. I found quite a few gmtime functions in time.h, but I am having trouble finding which one is equivalent, if it even exists. Could someone point me in the right direction?

like image 517
Jorel Estrada Avatar asked Aug 20 '12 20:08

Jorel Estrada


People also ask

What is Gmtime_r?

The gmtime_r() function breaks down the time value, in seconds, and stores it in result. result is a pointer to the tm structure, defined in <time. h>. The value time is usually obtained by a call to the time() function.

Is Gmtime thread safe?

APPLICATION USAGE. The gmtime_r() function is thread-safe and returns values in a user-supplied buffer instead of possibly using a static data area that may be overwritten by each call.


1 Answers

gmtime_r() is the thread-safe version of gmtime(). The MSVC implementation of gmtime() is already thread safe, the returned struct tm* is allocated in thread-local storage.

That doesn't make it immune from trouble if the function is called multiple times on the same thread and the returned pointer is stored. You can use gmtime_s() instead. Closest to gmtime_r() but with the arguments reversed ;)

like image 126
Hans Passant Avatar answered Oct 17 '22 09:10

Hans Passant