Ответ 1
Формулировка на странице вашего человека, скорее всего, неверна. Доверяйте стандарту и доверяйте справочную страницу на kernel.org. Напишите сотруднику документации для вашего дистрибутива и скажите им обновить страницы руководства.
Я видел, что есть вопрос о pthread sleep linux
Однако, когда я посмотрел man-страницу на моей машине linux, я вижу следующее.
СИНТАКСИС #include
unsigned int sleep(unsigned int seconds);
ОПИСАНИЕ sleep() заставляет текущий процесс спать до секунд секунд истекли или сигнал, который не игнорируется.
Итак, мой вопрос заключается в том, что я хотел бы узнать, какую страницу руководства я должен придерживать, чтобы скрыть поток. Кроме того, если оба они верны, как я могу это контролировать?
Возможно, я могу написать какой-то код для его проверки, но я хочу также получить ответы от других людей.
Спасибо.
Формулировка на странице вашего человека, скорее всего, неверна. Доверяйте стандарту и доверяйте справочную страницу на kernel.org. Напишите сотруднику документации для вашего дистрибутива и скажите им обновить страницы руководства.
В моем Linux-ящике есть две справочные страницы о функции сна:
$ man -k sleep
sleep (3) - Sleep for the specified number of seconds
sleep (3p) - suspend execution for an interval of time
Первый говорит "текущий процесс", как и ваш.
Второй говорит "вызывающий поток", но его преамбула гласит:
Эта страница руководства является частью руководства для программистов POSIX. Реализация Linux этого интерфейса может отличаться (см. Соответствующую страницу руководства Linux для детали поведения Linux), или интерфейс не может быть реализован в Linux.
Итак, я заключаю, что sleep(3)
описывает фактическое поведение, а sleep(3p)
- только для справки.
Страница руководства, на которую ссылается @cnicutar, говорит, что sleep
не является потокобезопасным (может быть, новым с 2011 года?). Интересно, что книга Дейва Бутенхофа 1997 ( "Программирование с помощью потоков Posix" ) включает пример, в котором спит поток с sleep
(p18). Это - это старый поток (другой вид) на comp.programming.threads, в котором Butenhof и другие обсуждают nanosleep
в контексте pthreads.
Короче говоря, nanosleep
, я думаю, хорошо, но sleep
нет. Командная страница nanosleep
на kernel.org не говорит, является ли nanosleep
потокобезопасным, но gcc docs говорят, что это есть.