История изменений
Исправление
pavlick,
(текущая версия)
:
Можешь показать на примере? Как это закостылить на расте:
#include <thread>
#include <iostream>
#include <shared_mutex>
using namespace std;
class S {
shared_mutex mtx;
unsigned i = 0;
public:
unsigned sh_fn() {
shared_lock lck{mtx};
return i;
}
void uq_fn() {
lock_guard lck{mtx};
++ i;
}
}s;
int main() {
thread r{[](){
while (true)
cout << s.sh_fn() << endl, this_thread::sleep_for(1s);
}};
thread r2{[](){
while (true)
cout << s.sh_fn() << endl, this_thread::sleep_for(1s);
}};
thread w{[](){
while (true)
s.uq_fn(), this_thread::sleep_for(1s);
}};
r.join(), w.join(), r2.join();
return 0;
}
Исходная версия
pavlick,
:
Можешь показать на примере? Как это закостылить на расте:
#include <thread>
#include <iostream>
#include <shared_mutex>
using namespace std;
class S {
shared_mutex mtx;
unsigned i = 0;
public:
unsigned sh_fn() {
shared_lock lck{mtx};
return i;
}
void uq_fn() {
lock_guard lck{mtx};
++ i;
}
}s;
int main() {
thread r{[](){
while (true)
cout << s.sh_fn() << endl, this_thread::sleep_for(1s);
}};
thread w{[](){
while (true)
s.uq_fn(), this_thread::sleep_for(1s);
}};
r.join(), w.join();
return 0;
}