使用 pthreads 在 C 中并发读取器和互斥写入器

标签 c pthreads

我希望是否有人可以转发我或向我展示一个具有多个读者但相互排斥 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/

相关文章:

c - 未命中 launch.json 断点中添加的命令行参数时的 visual studio 代码

无法让 fwrite 正常工作

html - 使用 C 段错误的 CGI

c - pthread 程序的臭名昭著的行为

php - “Fatal error class ' 尝试使用 PHP pthreads 时线程 ' not found in…”

c - 如何确定嵌入式系统 C 上正在使用的内存?

c - 如何用 C 语言创建一个用于简单 XOR 密码的 key 流生成器?

c - C 中的 pthreads - pthread_exit

c - 如何在C中拥有动态数量的线程

协调多个 posix 信号量