pthread에서 mutex unlock후 순서

urmajest의 이미지

안녕하세요.

여러개의 thread가 mutex를 이용해 critical section을

실행합니다.

pthread_mutex_lock(&mutex);

-- critical section --

pthread_mutex_unlock(&mutex);

그리고 어떠한 이유로 모든 thread는 모두 같은 priority를

가져야 하며, SCHED_FIFO 스케쥴링을 합니다.

이런 상황에서 제가 구현하고 싶은 건,

round-robin queue와 같은 방식/순서로 동작하게 하는

것입니다.

예를 들어 A가 lock을 가지고 있고,

E, D, B, C가 순서대로 lock을 시도한 경우,

A가 unlock을 하면 E가 실행이 되게 하는 것입니다.

즉, A->E로 스위칭이 되어야하고(SCHED_FIFO임에도),

가장 먼저온 E가 실행이 되어야 하는 것이죠.

SCHED_FIFO스케쥴링을 하고 모두 같은 priority를 가진 상태에서

이와같은 구현이 가능할까요?