프로세서 사용량 측면에서 다음 코드간에 차이가 있습니까? C : while 루프 semaphore_wait 대 while 루프
void *ManageSequencer(void *argument){
SomeClass *someClass = (SomeClass *)argument;
while (someClass->ThreadIsAlive()) {
while(someClass->isAsleep) { }
someClass->isAsleep = true;
//thread execution statements
}
return argument;
}
어디 일부 클래스는 실행 스레드를 필요로 할 때 주기적으로
isAsleep=false
을 설정
또는
void *ManageSequencer(void *argument){
SomeClass *someClass = (SomeClass *)argument;
while (someClass->ThreadIsAlive()) {
semaphore_wait(sem);
//thread execution statements
}
return argument;
}
가 실행 스레드를 필요로 주기적 때 someClass이 semaphore_signal(sem);
를 호출
이 질문은 원 자성과 관련이 없으며, while 루프가 세마포어 솔루션보다 프로세서가 더 많은 원인이되는지 여부입니다. 세마포어는 조건이 충족 될 때까지 블록하는 while 루프를 가지고 있습니까 (세마포어가 0보다 커야합니다)?