2011-04-10 3 views
1

저는 현재 크로스 플랫폼 작업 스케줄러에서 작업하고 있습니다 만, 세마포를 기다리는 동안 sem_wait 회전 문제가 있습니다. Windows에서는 WaitForSingleObject를 사용하고 있는데, WaitForSingleObject는 기다리는 동안 스레드를 생성합니다. 이는 원하는 것입니다. 그러나 sem_wait는 쓰레드가 방금 회전하게하는데, 비효율적이며 불필요합니다. sem_wait가 회전하는 대신 스레드를 생성하는 방법이 있습니까?sem_wait을 회전시키지 않는 방법이 있습니까?

감사

답변

2

당신은 세마포어 대신 condition variables를 사용하여 시도 할 수 있습니다. 함수에서 완전히 동일하지는 않지만 사용법에 따라 대신 사용할 수 있습니다. 그것들은 Windows 이벤트와 비슷하게 작동합니다. 조건 변수가 발생할 때까지 기다리기를 기다리고, 어떤 일이 발생했음을 나타 내기 위해 조건 변수를 알려줍니다.

pthread_cond_waitWaitForSingleObject과 유사하고 pthread_cond_signalSetEvent과 유사합니다.

+0

엄청나게 내가 찾고있는 것. 감사! – Kyle

관련 문제