라이브러리 pthread.h
은 pthread_rwlock_t
FIFO입니까?pthread 읽기 - 쓰기 잠금은 FIFO입니까?
다음 예에서는 다중 스레드가 있습니다. 모든 스레드가 순서대로 실행되는 것을 보장한다고 상상해보십시오.
// Thread 1 - does a write lock
pthread_rwlock_wrlock(&lock);
// Thread 2 - does a read but has to wait for 1
pthread_rwlock_rdlock(&lock);
// Thread 3 - does a read but has to wait for 1
pthread_rwlock_rdlock(&lock);
// Thread 4 - does a write but has to wait for 1
pthread_rwlock_wrlock(&lock);
// Thread 1 - unlocks
pthread_rwlock_unlock(&lock);
// who gets the lock?
스레드 1이 잠금을 해제하면 누가 잠금을 해제합니까? 스레드 2와 3이 보장 되는가? 또는 4에 제공 할 수 있습니까?
다시 말해서 모든 스레드가 순서대로 실행되며 모든 스레드가 잠금을 확보하려고 시도 할 때까지 스레드 1이 잠금을 해제하지 않는다고 가정하십시오.
FIFO라는 용어는 여기에 적용되지 않는다고 생각합니다. 스레드가 어떤 순서로도 실행되는 것은 아닙니다. 그리고 그러한 것들에 대한 가정을하면 종종 멀티 스레딩 문제가 발생합니다. _imagine_ 구문은 실제로는 다른 방향이므로 의미가 없습니다. 잠긴 스레드가 실행될 스레드입니다. – VTT
'thread1'에서'join'을 호출하고'thread1'이 끝날 때까지 기다릴 수 있습니다. ''스레드는 잠금에 대한 스케줄링 정책에 따라 다르므로 반드시 순서대로 실행하지 않아도됩니다. 'read-write' 락 대신 간단하게'뮤텍스 (mutex) '를 사용한다면'뮤텍스 (mutex)'내에서'FIFO' 스케줄링 정책을 사용하여 스레드가 순차적으로 실행되도록 보장 할 수 있습니다. –