草庐IT

volatile

全部标签

c++ - C++中 volatile 成员函数的目的是什么?

C++中volatile成员函数的作用是什么? 最佳答案 要回答有关“volatile成员函数”意味着什么的问题(可能是也可能不是发布问题的人最初的意图),将成员函数标记为const或volatile(或组合的constvolatile)将这些限定符应用于函数中使用的this指针。如标准所述(9.2.1“this指针”):ThetypeofthisinamemberfunctionofaclassXisX*.Ifthememberfunctionisdeclaredconst,thetypeofthisisconstX*,ifthe

c++ - C++中 volatile 成员函数的目的是什么?

C++中volatile成员函数的作用是什么? 最佳答案 要回答有关“volatile成员函数”意味着什么的问题(可能是也可能不是发布问题的人最初的意图),将成员函数标记为const或volatile(或组合的constvolatile)将这些限定符应用于函数中使用的this指针。如标准所述(9.2.1“this指针”):ThetypeofthisinamemberfunctionofaclassXisX*.Ifthememberfunctionisdeclaredconst,thetypeofthisisconstX*,ifthe

c++ - 如何在 C++ 中正确访问映射内存而没有未定义的行为

我一直试图弄清楚如何在不调用未定义行为的情况下从C++17访问映射缓冲区。对于这个例子,我将使用Vulkan的vkMapMemory返回的缓冲区。.所以,根据N4659(最终的C++17工作草案),第[intro.object]节(强调):TheconstructsinaC++programcreate,destroy,referto,access,andmanipulateobjects.Anobjectiscreatedbyadefinition(6.1),byanew-expression(8.3.4),whenimplicitlychangingtheactivemembero

c++ - 如何在 C++ 中正确访问映射内存而没有未定义的行为

我一直试图弄清楚如何在不调用未定义行为的情况下从C++17访问映射缓冲区。对于这个例子,我将使用Vulkan的vkMapMemory返回的缓冲区。.所以,根据N4659(最终的C++17工作草案),第[intro.object]节(强调):TheconstructsinaC++programcreate,destroy,referto,access,andmanipulateobjects.Anobjectiscreatedbyadefinition(6.1),byanew-expression(8.3.4),whenimplicitlychangingtheactivemembero

c++ - 为什么我没有提供来自 volatile 的默认复制构造函数?

这段代码:classX{intmember;};volatileXa;Xb=a;因错误而失败:prog.cpp:6:7:error:nomatchingfunctionforcallto‘X::X(volatileX&)’prog.cpp:6:7:note:candidatesare:prog.cpp:1:7:note:X::X()prog.cpp:1:7:note:candidateexpects0arguments,1providedprog.cpp:1:7:note:X::X(constX&)prog.cpp:1:7:note:noknownconversionforargume

c++ - 为什么我没有提供来自 volatile 的默认复制构造函数?

这段代码:classX{intmember;};volatileXa;Xb=a;因错误而失败:prog.cpp:6:7:error:nomatchingfunctionforcallto‘X::X(volatileX&)’prog.cpp:6:7:note:candidatesare:prog.cpp:1:7:note:X::X()prog.cpp:1:7:note:candidateexpects0arguments,1providedprog.cpp:1:7:note:X::X(constX&)prog.cpp:1:7:note:noknownconversionforargume

c++ - volatile 和多线程 : is the following thread-safe?

假设有两个线程分别运行Thread1()和Thread2()。线程1只是设置了一个全局标志来告诉线程2退出,线程2会定期检查它是否应该退出。volatileboolis_terminate=false;voidThread1(){is_terminate=true;}voidThread2(){while(!is_terminate){//...}}我想问一下假设对is_terminate的访问是原子的,上述代码是否安全。我已经知道许多资料表明volatile通常不能确保线程安全。但是在只共享一个原子变量的情况下,真的需要用锁来保护共享变量吗? 最佳答案

c++ - volatile 和多线程 : is the following thread-safe?

假设有两个线程分别运行Thread1()和Thread2()。线程1只是设置了一个全局标志来告诉线程2退出,线程2会定期检查它是否应该退出。volatileboolis_terminate=false;voidThread1(){is_terminate=true;}voidThread2(){while(!is_terminate){//...}}我想问一下假设对is_terminate的访问是原子的,上述代码是否安全。我已经知道许多资料表明volatile通常不能确保线程安全。但是在只共享一个原子变量的情况下,真的需要用锁来保护共享变量吗? 最佳答案

神秘的volatile关键字

前言volatile关键字是面试中常问的知识点,包括三点:可见性、有序性、非原子性。接下来就说一下这三点。JMM(JavaMemoryModel-Java内存模型)每个Java线程都有⾃⼰的⼯作内存。操作数据,⾸先从主内存中读,得到⼀份拷⻉,操作完毕后再写回主内存JMM可能带来可⻅性、原⼦性和有序性问题可⻅性:是指某个线程对主内存内容的修改,应该⽴刻通知其它线程有序性:是指指令是有序的,不会被重排原⼦性:是指⼀个操作是不可分割的,完整性,也即某个线程正在做某个具体业务时,中间不可以被加塞或者被分割。需要整体完整,要么同时成功,要么同时失败,不能执⾏⼀半就不执⾏volatile关键字它是Java

java - 在几乎不改变执行顺序的情况下,如何分配变量会导致严重的性能下降?

在使用多线程时,我会观察到一些与AtomicLong(以及使用它的类,例如java.util.Random)有关的意外但严重的性能问题,目前我对此没有任何解释。但是,我创建了一个简约的示例,该示例基本上由两个类组成:一个类“Container”,该类保留对volatile变量的引用;一个类“DemoThread”,该类在线程执行期间对“Container”的实例进行操作。请注意,对“Container”和volatilelong的引用是私有(private)的,并且永远不会在线程之间共享(我知道这里不需要使用volatile,仅用于演示目的)-因此,“DemoThread”的多个实例应