C++ 使用boost::upgrade_lock和shared_lock实现读/写线程安全 double x=10; boost::shared_mutex xSharedMutex; void r(){ boost::共享锁(xSharedMutex); 对于(int i=0;i
您需要唯一的所有权来写作:C++ 使用boost::upgrade_lock和shared_lock实现读/写线程安全 double x=10; boost::shared_mutex xSharedMutex; void r(){ boost::共享锁(xSharedMutex); 对于(int i=0;i,c++,multithreading,boost,thread-safety,C++,Multithreading,Boost,Thread Safety,您需要唯一的所有权来写作: double x = 10; boost::shared_mutex xSharedMutex; void r() { boost::shared_lock<boost::shared_mutex> lock(xSharedMutex); for (int i = 0; i < 100; i++) { cout << "**** READ **** " << x << endl;
double x = 10;
boost::shared_mutex xSharedMutex;
void r() {
boost::shared_lock<boost::shared_mutex> lock(xSharedMutex);
for (int i = 0; i < 100; i++) {
cout << "**** READ **** " << x << endl;
usleep(200);
}
}
void w() {
boost::upgrade_lock<boost::shared_mutex> lock(xSharedMutex);
for (int i = 0; i < 100; i++) {
x = i + 12;
cout << "---- WRITE ---- " << x <<endl;
usleep(200);
}
}
int main() {
boost::thread t1(&r);
boost::thread t2(&w);
sleep(3);
}
boost::unique_lock锁(xSharedMutex);
对于(int i=0;i<100;i++){
x=i+12;
标准::cout
boost::unique_lock<boost::shared_mutex> lock(xSharedMutex);
for (int i = 0; i < 100; i++) {
x = i + 12;
std::cout << "---- WRITE ---- " << x << std::endl;
usleep(200);
}
upgrade_lock<shared_mutex> lock(xSharedMutex);
for (int i = 0; i < 100; i++) {
{
upgrade_to_unique_lock<shared_mutex> write_lock(lock);
x = i + 12;
std::cout << "---- WRITE ---- " << x << std::endl;
}
usleep(200);
}