C++多线程-CH3 Sharing Data between threads
2021-02-01 03:16
标签:一个 返回 需要 双向 empty 多线程操作 bsp 共享数据 tween 1、多线程间共享数据存在什么问题? 不变式。比如:is_empty()接口返回的永远是接口是否为空。比如,size()接口返回的是这个list中的节点个数。 比如 这个双向list的每个节点都持有指向它前后节点的指针。 当多线程操作这些共享数据的时候,这个不变式有时候会遭到破坏。 比如,你在删除一个节点的时候,删除到中间的时候,这个不变式是被破坏的状态,即 某个节点持有的next实际上并不是真正的next。 这时候如果有线程闯入,读取next就会得到错误的数据。这就叫做一个race condition。 通俗点的例子就是,你要换衣服,进入换衣间,脱了旧衣服,新的还没穿好,这时候,外人如果看到,是一个尴尬的状态。 所以,这个换衣服期间,是不能被外人看见的状态。这就是一个race condition。需要锁门。 race condition定义:两个或多个线程,因为执行的操作顺序不同,导致输出结果不一致。 C++多线程-CH3 Sharing Data between threads 标签:一个 返回 需要 双向 empty 多线程操作 bsp 共享数据 tween 原文地址:https://www.cnblogs.com/buddho/p/12814347.html
下一篇:[Python] 字符串操作
文章标题:C++多线程-CH3 Sharing Data between threads
文章链接:http://soscw.com/index.php/essay/49328.html