Текущее время должно быть сохранено глобально для gettimeofday для работы, однако я не уверен, изменяет ли функция какое-либо глобальное состояние так, чтобы параллельное выполнение было не определено.
gettimeofday является потокобезопасным.
Функции (posix), перечисленные здесь , могут не соответствовать, gettimeofday не входит в их число.
Да, это потокобезопасный. Единственные данные, которые он изменяет, находятся в структурах, на которые вы передаете указатели, поэтому реализация, не являющаяся поточно-ориентированной, должна была бы делать что-то жуткое.
Удачи в вашем проекте.
В glibc
gettimeofday(2)
— это простая оболочка вокруг системного вызова (это vsyscall
). В пользовательской области данные не затрагиваются. Он является потокобезопасным.
При этом вызове данные не изменяются. Вы просто получаете копию. Следовательно, он полностью безопасен для потоков.