системный вызов sleep в теме - PullRequest
       24

системный вызов sleep в теме

0 голосов
/ 02 октября 2011

Я использую библиотеку pthread для многопоточности. Внутри функции потока я использую системный вызов sleep. Будет ли это блокировать один поток или весь процесс. Спасибо.

1 Ответ

1 голос
/ 02 октября 2011

Как правило, sleep влияет только на вызывающий поток. Реальные потоки, управляемые ядром, работают независимо друг от друга. Однако в приложении с «зелеными» потоками (не родным для ОС; управляемым самим приложением) системный вызов, который блокирует, может блокировать все. Но такого рода поломки встречаются довольно редко - программное обеспечение, управляющее зелеными потоками, имеет тенденцию предоставлять всю среду выполнения, включая пути к sleep без обращения к системному вызову.

Лучший вопрос ... вам действительно нужно sleep вообще? Синхронизация по времени имеет тенденцию приводить к гонкам и хрупким приложениям. Есть способ для потоков ждать и запускать друг друга; это ведет к лучшему детерминизму.

...