大佬教程收集整理的这篇文章主要介绍了c – 我可以从线程A写一个变量,而我从线程B读取相同的变量,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是可能发生的上下文:从主线程,我将设置一个both,它是qthread的成员.在我将bool设置为true时或之后,qthread可以在使用此bool的函数中(这是主线程和qthread使用的函数,所有内容都已受到保护和同步,以便不具有两个线程同时运行的函数)
例如,考虑一个整数变量,表示0到100范围内的进度值.您可以在从另一个线程递增的同时从一个线程读取它.您不介意在写入之前读取值还是在写入之后读取值.你很快就会再读一遍,然后你会在写完之后得到它的价值.
在那种情况下,比赛是良性的.然而,可能不是良性的是被称为撕裂的东西.硬件可能允许您读取值,而另一个线程只写入了部分内存.
例如,写入线程可以写低字,然后发生两个字的读取,然后写入高字.撕裂会导致错误.
硬件确实提供了有关撕裂的保证,但它们在架构之间有所不同.例如,对于4字节对齐的4字节宽数据,x86具有原子访问,即没有撕裂.
如果您正在编写可移植代码,那么您处于相当棘手的水域,因为当前的标准不能保证原子性.如果您可以在硬件平台上做出假设,那么您可以利用良性竞赛.
以上是大佬教程为你收集整理的c – 我可以从线程A写一个变量,而我从线程B读取相同的变量全部内容,希望文章能够帮你解决c – 我可以从线程A写一个变量,而我从线程B读取相同的变量所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。