2011-10-01 6 views
0

멀티 스레드에 pthread 라이브러리를 사용하고 있습니다. 내부 스레드 함수, 나는 잠 시스템 호출을 사용합니다. 이것은 단일 스레드 또는 전체 프로세스를 차단할 것입니다. 감사.스레드에서 슬립 시스템 호출

답변

1

일반적으로 sleep은 호출 스레드에만 영향을줍니다. 실제 커널 관리 스레드는 서로 독립적으로 실행됩니다. "녹색"스레드가있는 응용 프로그램 (OS 자체가 아니며 응용 프로그램 자체에서 관리)에서는 블록 된 시스템 호출이 모든 것을 차단할 수 있습니다. 그러나 이러한 종류의 단절은 드문 경우입니다. 녹색 스레드를 관리하는 소프트웨어는 시스템 호출에 의하지 않고 sleep에 이르는 방법을 포함하여 전체 런타임 환경을 제공하는 경향이 있습니다.

더 좋은 질문은 ... 정말로 sleep이 필요합니까? 시간 기반 동기화는 경쟁 조건 및 취약한 응용 프로그램으로 이어지는 경향이 있습니다. 스레드가 대기하고 서로를 트리거하는 방법이 있습니다. 이는 더 나은 결정론으로 이어집니다.

+0

내 코드에는 스레드간에 동기화가 없습니다. 각 스레드가 분리됩니다. 나는 잠자기 syscall을 사용하여 스레드가 몇 가지 작업을 수행 한 후 몇 초 동안 잠자기 상태에 있어야한다는 할당 설명을 따른다. – Rambo