假设您有大多数时间的Pthreads程序 执行读取)仅对特定数据结构的操作,但偶尔 你正在更新数据结构。你怎么能同步访问 到那个数据结构,以避免竞争条件,仍然主要是并行访问数据结构。 我需要你的帮助
答案 0 :(得分:0)
pthreads read-write locks是针对此用例设计的。
使用pthread_rwlock_t
类型声明读写锁,并使用静态初始化程序PTHREAD_RWLOCK_INITIALIZER
或使用pthread_rwlock_init()
动态初始化。
数据结构的只读用户使用pthread_rwlock_rdlock()
进行读锁定 - 可以同时保存无限数量的读锁定,因此多个读取器可以同时访问数据结构。数据结构的更新用户使用pthread_rwlock_wrlock()
进行写锁定。写锁是独占的 - 在保持写锁时,没有其他线程可以将读写锁定(用于读或写)。