pthreads同步多个读操作

时间:2016-01-02 16:49:57

标签: multithreading synchronization thread-safety pthreads

假设您有大多数时间的Pthreads程序 执行读取)仅对特定数据结构的操作,但偶尔 你正在更新数据结构。你怎么能同步访问 到那个数据结构,以避免竞争条件,仍然主要是并行访问数据结构。 我需要你的帮助

1 个答案:

答案 0 :(得分:0)

pthreads read-write locks是针对此用例设计的。

使用pthread_rwlock_t类型声明读写锁,并使用静态初始化程序PTHREAD_RWLOCK_INITIALIZER或使用pthread_rwlock_init()动态初始化。

数据结构的只读用户使用pthread_rwlock_rdlock()进行读锁定 - 可以同时保存无限数量的读锁定,因此多个读取器可以同时访问数据结构。数据结构的更新用户使用pthread_rwlock_wrlock()进行写锁定。写锁是独占的 - 在保持写锁时,没有其他线程可以将读写锁定(用于读或写)。