【发布时间】:2010-01-25 08:22:03
【问题描述】:
ReadWriteMutex 的常用模式是使用信号量并让写入器循环获取所有资源:
inline void write_lock() {
ScopedLock lock(acquire_mutex_);
for (size_t i=0; i < resource_count_; ++i) {
if (sem_wait(semaphore_) < 0) {
fprintf(stderr, "Could not acquire semaphore (%s)\n", strerror(errno));
}
}
}
这很好,只是您必须在信号量初始化期间指定资源计数,并且随意选择 10 或 99999 的资源计数感觉不对。是否有更好的模式可以允许“无限”读者(不需要资源计数)?
【问题讨论】:
标签: c++ concurrency semaphore