1
在库中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不会释放锁,直到所有线程都试图获得锁。
我认为这个词在这里不适用。线程不保证以任何顺序运行。对这些事情做出假设通常会导致多线程问题。你的_imagine_短语是毫无意义的,因为它实际上是另一种方式:获得锁定的线程是将要运行的线程。 – VTT
你可以在'thread 1'上调用'join',并保证它们等待'thread 1'完成。至于'''线程不保证以任何顺序运行“,这不一定是正确的,因为它取决于锁的调度策略。如果不是'读写'锁,我们有一个简单的'互斥锁',我们可以保证这些线程按照'mutex'中的'FIFO'调度策略的顺序运行。 –