在库中pthread.hpthread_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直到所有线程都试图获得锁后才释放锁。

最佳答案

我做了一些研究,发现this document from the Oracle website解释了pthread读写锁的调度策略。



因此,总之,不能保证它们是FIFO。

10-08 19:31