1

我希望有人可以转发或向我展示一个程序,该程序具有多个读者但相互排斥 C 中的作者。我在整个互联网上搜索了它,但找不到使用粗粒度锁定显示此行为的单个示例。我知道我可以使用 pthread_rwlock_init、pthread_rwlock_rdlock 等,我只是不知道如何使用它。我通过例子学习,这就是我在这里的原因。

假设我有一个代码区域(不是共享变量)并且我想要多次读取,但只有一个写入器,这就是我不知道如何使用 pthreads rwlocks 来完成的。我不明白代码如何知道现在它正在被写入,而现在它正在被读取。谢谢。

4

1 回答 1

1

您可以查看 Peter Chapin 的Pthread 教程的第 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 ;
}
于 2013-04-03T17:57:32.943 回答