CRITICAL_SECTION设置并获得单一的bool值

CRITICAL_SECTION设置并获得单一的bool值,第1张

概述CRITICAL_SECTION设置并获得单一的bool值

现在写复杂的class ,觉得我用了很多CRITICAL_SECTION 。

据我所知,有一些types的primefaces *** 作,总是执行没有任何硬件或软件中断。

我想检查我是否正确理解一切。

设置或获取primefaces值,我们不需要CRITICAL_SECTION因为这样做不会有中断。

bool是primefaces的。

所以有我的陈述,要问,如果他们是正确的,如果他们是正确的,什么types的variables也可以设置或得到没有CRITICAL_SECTION ?

如何捕获未alignment的内存访问?

如何获取在VC + +的WPF应用程序的屏幕截图?

windows内存映射文件内容默认情况下始终归零?

在C linux中查询MXlogging

如何查看networking连接是否改变状态?

PS我正在谈论获取或设置每个方法一个单一的值 ,而不是两个,不是五个,而是一个。

在windows XP中不使用东亚语言包而需要使用GDI +显示日文文本的帮助

在windows应用程序中编译时embeddedSVN修订版本号

改进稀疏线性系统的解法

检测windows 10上的活动虚拟桌面 – 任务视图 – 虚拟桌面切换器

C ++更改最大内存限制

你不需要锁定原子数据,但内部可能会锁定。 注意例如,C ++ 11的std::atomic有一个is_lock_free函数。

bool可能不是原子的。 看到这里和这里

注意:这个答案适用于windows,并没有说其他平台。

没有InterlockedRead或InterlockeDWrite函数; 使用正确的整数大小(和对齐)进行简单的读写 *** 作在windows上是原子 *** 作( “对正确对齐的32位变量的简单读写 *** 作是原子 *** 作” )。

(并且没有缓存问题,因为正确对齐的变量总是在一个缓存行上)。

但是, 读取和修改这些变量(或任何其他变量)不是原子的:

读一个bool ? 精细。 测试和设置一个bool ? 更好地使用InterlockedCompareExchange 。

覆盖整数? 大! 添加到它? 关键部分。

在这里可以找到:

简单的读取和写入正确对齐的64位变量在64位windows上是原子的。 读取和写入64位值不能保证在32位windows上是原子的。 读取和写入其他大小的变量不保证在任何平台上都是原子的。

结果应该是正确的,但在编程中最好不要相信应该 。 由于cpu高速缓存,故障的可能性依然很小。

您不能保证bool,或其他类型或大多数 *** 作都是原子的所有实现/平台/编译器。 所以,不,我不相信你的陈述是正确的。 你可以重新设计你的逻辑或者使用其他方法来建立原子性,但是如果你依赖它,那么你可能无法摆脱只删除CRITICAL_SECTION用法。

总结

以上是内存溢出为你收集整理的CRITICAL_SECTION设置并获得单一的bool值全部内容,希望文章能够帮你解决CRITICAL_SECTION设置并获得单一的bool值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1287136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存