2010-02-17 61 views
11

在Linux的情況下,對於時間函數,我們有一個_r版本例如:localtime有localtime_r,但在Windows中我無法找到一些這樣的功能。 Windows時間函數本質上是線程安全的嗎?MSVC的時間函數是否線程安全?

回答

12

與Microsoft Visual Studio你有一個選擇C-運行時的使用方法:通常他們是:

  • 靜態單線程庫(libc)
  • 靜態多線程庫(libcmt)
  • 動態多線程庫(msvcrt)

多線程庫是線程安全的。單線程庫最後一次出現在MSVC 2005中,並已從MSVC 2008中刪除。

dll運行時(msvcrt.dll)只能是線程安全的 - 由於實現在dll中,因此在多個其他所有這些都可以使用工作線程,它必須是線程安全的,因爲設計一個應用程序來使用它是不可能的。

-2

我認爲他們不是ThreadSafe並且沒有_r版本。但如果我錯了,請糾正我。

也許是更好,如果你使用自己的Windows功能,如

GetSystemTimeGetSystemTimeAsFileTimeGetLocalTime

+0

*糾正我,如果我錯了* - 你錯了。查看其他答案 – vaxquis 2014-09-02 14:09:52