pthreads同步多个读操作

pthreads synchronization multiple read operations

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

pthreads read-write locks 专为该用例设计。

Read-write 锁使用 pthread_rwlock_t 类型声明,并使用静态初始化程序 PTHREAD_RWLOCK_INITIALIZER 或使用 pthread_rwlock_init().

动态初始化

您的数据结构的 read-only 用户使用 pthread_rwlock_rdlock() 获取读锁 - 可以并发持有无限数量的读锁,因此多个读者可以同时访问数据结构。您的数据结构的更新用户使用 pthread_rwlock_wrlock() 获取写锁。写锁是独占的 - 当持有写锁时,其他线程不能锁定 read-write(无论是读还是写)。