代码之家  ›  专栏  ›  技术社区  ›  Jay

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

  •  11
  • Jay  · 技术社区  · 14 年前

    对于Linux,对于时间函数,我们有一个版本,例如:localtime有localtime,但是在Windows中,我找不到这样的函数。Windows时间函数本质上是线程安全的吗?

    4 回复  |  直到 10 年前
        1
  •  12
  •   Chris Becke    14 年前

    对于Microsoft Visual Studio,您可以选择使用C运行时:通常是:

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

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

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

        2
  •  8
  •   janneb    14 年前

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

        3
  •  4
  •   vaxquis user2577497    10 年前

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

        4
  •  -2
  •   HyLian    14 年前

    我认为它们不是线程安全的,也没有任何版本。但如果我错了就纠正我。

    也许你最好使用自己的windows功能,比如

    GetSystemTime , GetSystemTimeAsFileTime GetLocalTime