我希望是否有人可以转发我或向我展示一个具有多个读者但相互排斥 C 语言编写者的程序。我在整个互联网上搜索它,但找不到一个使用粗粒度显示此行为的示例锁定。我知道我可以使用 pthread_rwlock_init、pthread_rwlock_rdlock 等,但我不知道如何使用它。我通过示例学习,这就是我在这里的原因。
假设我有一个代码区域(不是共享变量)并且我想要多次读取,但只有一个写入器,这就是我不知道如何使用 pthreads rwlocks 来完成的。我不明白代码如何知道现在正在写入,而不是现在正在读取。 谢谢。
最佳答案
您可以查看 Peter Chapin 的 Pthread Tutorial 的第 24 页举个例子。我在下面添加了它。
#include<pthread.h>
int shared;
pthread_rwlock_t lock ;
void∗ thread_function (void∗ arg)
{
pthread_rwlock_rdlock (&lock);
//Read from the shared resource.
pthread_rwlock_unlock(&lock);
}
void main( void )
{
pthread_rwlock_init(&lock, NULL);
// Start threads here.
pthread_rwlock_wrlock(& lock );
// Write to the shared resource .
pthread_rwlock_unlock(&lock);
// Join_with threads here .
pthread_rwlock_destroy(&lock);
return 0 ;
}
关于使用 pthreads 在 C 中并发读取器和互斥写入器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15794339/