Действительно ли функция gettimeofday ориентирована на многопотоковое исполнение в Linux?

Текущее время должно быть сохранено глобально для gettimeofday для работы, однако я не уверен, изменяет ли функция какое-либо глобальное состояние так, чтобы параллельное выполнение было не определено.

8
задан Brynn Mahsman 10 July 2010 в 17:41
поделиться

4 ответа

gettimeofday является потокобезопасным.

Функции (posix), перечисленные здесь , могут не соответствовать, gettimeofday не входит в их число.

22
ответ дан 5 December 2019 в 05:55
поделиться

Да, это потокобезопасный. Единственные данные, которые он изменяет, находятся в структурах, на которые вы передаете указатели, поэтому реализация, не являющаяся поточно-ориентированной, должна была бы делать что-то жуткое.

Удачи в вашем проекте.

3
ответ дан 5 December 2019 в 05:55
поделиться

В glibc gettimeofday(2) — это простая оболочка вокруг системного вызова (это vsyscall ). В пользовательской области данные не затрагиваются. Он является потокобезопасным.

2
ответ дан 5 December 2019 в 05:55
поделиться

При этом вызове данные не изменяются. Вы просто получаете копию. Следовательно, он полностью безопасен для потоков.

1
ответ дан 5 December 2019 в 05:55
поделиться