MSVC的时间函数是否是线程安全的?

Jay*_*Jay 11 c windows

对于Linux,对于时间函数,我们有_r版本Ex:localtime有localtime_r,但在Windows中我无法找到一些这样的函数.Windows时间函数本质上是线程安全的吗?

Chr*_*cke 12

使用Microsoft Visual Studio,您可以选择使用c运行时:通常它们是:

  • 静态单线程库(libc)
  • 静态多线程库(libcmt)
  • 动态多线程库(msvcrt)

多线程库是线程安全的.单线程库最后一次出现在MSVC 2005中,并已从MSVC 2008中删除.

dll运行时(msvcrt.dll)只需要线程安全 - 因为实现是在一个DLL中,因此在进程中的多个其他模块之间共享,所有这些都可以使用工作线程,它必须是线程安全的,因为它会没有理智的设计应用程序来使用它.


jan*_*neb 8

在Windows上,非_r函数是线程安全的,因为它们使用线程本地存储作为缓冲区.参见例如http://msdn.microsoft.com/en-us/library/bf12f0hc(VS.80).aspx


mat*_*ekm 5

我认为 Windows localtime_s 是线程安全的:http://msdn.microsoft.com/en-us/library/a442x3ye (VS.80).aspx - 至少在使用 MS CRT 时