c++中的数据竞争

简单概括数据竞争,就是两个以上对象同时访问一个内存位置,且至少有一个写操作,两个都是非原子操作,且内存没有锁保护

例子:

  

   size_t count = 0;
   std::thread t1([&count]{ count ++});
   std::thread t2([&count]{ count ++});

此时两个线程同时访问count,两个都是写操作,非原子操作,且count没有锁保护

数据竞争会引发未定义行为,也就是编译器可以任意操作执行顺序

posted @ 2026-04-17 16:43  freeyang8  阅读(12)  评论(0)    收藏  举报