ライブラリpthread.h
にはpthread_rwlock_t
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 がロックを解放しないとします。