gpt4 book ai didi

c++ - 关于 volatile 使用的规则是否严格?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:11 25 4
gpt4 key购买 nike

我看过这句话:

the general rule is, if you have variables of primitive type that must be shared among multiple threads, declare those variables volatile

来自 this article ,以及这句话:

In general, any data that may be undated asynchronously should be declared to be volatile.

来自 this page ,现在考虑到这个引入的规则,我想知道你能否举一个例子,说明尽管存在对数据的异步访问,但声明数据 volatile 在实践中没有用,或者没有这样的异常(exception)情况并且规则是严格的。

最佳答案

我记得那篇文章发表的时间,也记得随后在 comp.lang.c++.moderated 上进行的无休止的讨论。

IIRC,Andrei 劫持了 volatile 关键字,以使用它来区分不同的函数重载。 (参见 this article by Scott Meyers 了解另一个这样的想法。)他所做的非常出色,因为它允许编译器在你搞砸时捕获你up 对对象的 protected 和不 protected 访问(非常类似于如果您尝试修改常量,编译器会捕获)。但除了它对您有帮助这一事实外,它与实际保护对对象的并发访问无关

问题只是 90% 的人只看了一眼文章,他们看到的只是同一篇文章中的 volatile 和“threads” 。然后,根据他们的知识,他们要么得出错误的结论,即 volatile 对线程有好处(您似乎已经这样做了),要么他们大喊大叫指责他引导他人得出错误的结论。
似乎很少有人能够真正通读这篇文章并理解他真正做的事情。

关于c++ - 关于 volatile 使用的规则是否严格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4168735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com