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(无论是读还是写)。
假设你有一个 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(无论是读还是写)。