Являются ли временные функции MSVC потокобезопасными?

В случае Linux для функций времени у нас есть версии _r. Ex: localtime имеет localtime_r, но в Windows я не могу найти некоторые такие функции. Являются ли функции времени Windows неотъемлемо потокобезопасными?

Ответ 1

В Microsoft Visual Studio у вас есть выбор времени использования c: обычно они были:

  • статическая однопоточная библиотека (libc)
  • Статическая многопоточная библиотека (libcmt)
  • динамическая многопоточная библиотека (msvcrt)

Многопоточные библиотеки являются потокобезопасными. Однопоточная библиотека в последний раз была замечена в MSVC 2005 и была удалена из MSVC 2008.

Время выполнения dll (msvcrt.dll) просто должно быть потокобезопасным. Поскольку реализация находится в dll и, следовательно, распределяется между несколькими другими модулями в процессе, все из которых могут использоваться рабочими потоками, это должно быть потокобезопасным так как не было бы разумного способа разработки приложения для его использования в противном случае.

Ответ 4

Я думаю, что они не ThreadSafe и не существует версии _r. Но исправьте меня, если я ошибаюсь.

Может быть, лучше, если вы используете собственные функции Windows, например

GetSystemTime, GetSystemTimeAsFileTime или GetLocalTime