我不清楚互斥锁和锁是如何工作的.
我有一个对象(my_class),我在主线程中添加,删除和读取对象中的数据.在我的第二个帖子中,我想从我的对象中检查一些数据.问题是,在从第二个线程读取数据时,当我删除主线程中的对象时,它可能导致崩溃应用程序.
因此我在std::lock_guard<std::mutex> lock(mymutex)第二个帖子中创建.
我创建测试,并使用此lock_guard它永远不会崩溃.但我不知道我是否也需要在主线程中使用锁定.
问题是,当第二个线程锁定互斥锁并读取数据和主线程想要从对象中删除数据但没有锁定时会发生什么?否则,当主线程从对象中删除数据时,第二个线程想要锁定互斥锁并从对象读取数据会发生什么?
在一个线程写入和第二个线程中读取同一个对象时会发生什么?这会导致应用程序崩溃吗?
我的想法是,在主线程上将数据保存到对象或从对象更改数据,在第二个线程上只读取此数据.
如果我理解,问题可能只是在写入对象新值并同时从同一对象读取时,读取值将是旧的.但这对我来说不是问题.
我搜索我的问题并找到了这个主题如果两个线程读写同一块内存会发生什么但我不确定它是否适用于我的问题.