这是我的问题。我有两个线程 writer1 和 writer2 修改结构的属性,writer1 在 attribut1 中写入,writer2 在 attribut2 中写入。我有一个阅读结构的线程阅读器。我在等的是:writer1在写的时候,writer2也可以同时写。(不会造成问题,因为他们修改了不同的属性)。当然writer2在写的时候,writer1也可以同时写。但是当 Reader 正在读取结构的值时,writer1 和 writer2 都不能同时写入。我应该确定我正在读取的值不会被其他线程改变
示例:
typedef struct
{
int a;
double b;
} data;
data glob;
int main()
{
thread reader([]()
{
while(1)
{
sleep(1s);
cout << glob;
}
});
thread writer1([]()
{
while(1)
glob.a++;
});
thread writer2([]()
{
while(1)
glob.b++;
});
int i;
cin >>i;
}