4.2. 스레드 동기화
sched_yield 함수는 우선순위가 낮은 스레드를 실행할 기회를 제공할 수 있는 동기화 메커니즘입니다. 이러한 유형의 요청은 잘못 작성된 애플리케이션 내에서 발행된 경우 실패하기 쉽습니다.
우선 순위가 높은 스레드는 sched_yield() 를 호출하여 다른 스레드에서 기회를 실행할 수 있습니다. 호출 프로세스는 해당 우선 순위에서 실행되는 프로세스 큐의 테일로 이동합니다. 동일한 우선 순위에서 다른 프로세스가 실행되지 않는 경우 호출 프로세스가 계속 실행됩니다. 해당 프로세스의 우선 순위가 높으면 잠재적으로 사용 중인 루프를 생성하여 머신을 사용할 수 없게 될 수 있습니다.
Cryo stat_DEADLINE 작업이 sched_yield() 를 호출하면 구성된 CPU를 포기하고 나머지 런타임은 다음 기간까지 즉시 제한됩니다. sched_yield() 를 사용하면 다음 기간이 시작될 때 작업이 발생합니다.
스케줄러는 언제, 실제로 실행을 기다리는 다른 스레드가 있는지 확인할 수 있습니다. 실시간 작업에서 sched_yield() 를 사용하지 마십시오.
사전 요구 사항
-
POSIX 스레드(
pthread) 개발 라이브러리가 설치되어 있어야 합니다.
프로세스
sched_yield()함수를 호출하려면 다음 코드를 실행합니다.for(;;) { do_the_computation(); /* * Notify the scheduler at the end of the computation * This syscall will block until the next replenishment */ sched_yield(); }Cryo
stat_DEADLINE작업은 다음 기간(다음 루프 실행 시작)까지 CBS( conflict-based search) 알고리즘에 의해 제한됩니다.작은 정보자세한 내용은 시스템의
pthread.h(P),sched_yield(2)및sched_yield(3p)매뉴얼 페이지를 참조하십시오.