草庐IT

volatile-qualifier

全部标签

java - volatile 引用是在线程之间传递 MotionEvents 的安全方式吗?

我很好奇这种方法的安全性,我曾考虑使用这种方法在我的Android应用程序中传递触摸事件(并测试我对Java并发性的理解)。这是基础知识:我有一个连接到SurfaceHolder.Callback的SurfaceView以获取用户输入事件,主要是onTouchEvent回调。调用onTouchEvent方法后,我查看是否event.getAction()==MotionEvent.ACTION_UP,如果是,则调用我命名为postTouchEvent这是我的应用程序线程的成员方法,用于更新应用程序的状态并绘制到Canvas。表面View@OverridepublicbooleanonT

java - 错误 : "Qualifier must be an expression" - Android Studio

Activity:publicclassPreviewsFragmentextendsFragment{privateViewPagermPager;@OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){ViewGrouproot=(ViewGroup)inflater.inflate(R.layout.section_all_icons,container,false);ActionBartoolbar=((AppCompatActivit

java - 使用 volatile int 的多线程中的兴趣案例

好的。我编写了代码并得到了意想不到的结果,我不知道如何解释这个结果。有人可以帮我解决这个问题吗?publicclassJMM{staticvolatileBooleanready=false;staticvolatileintdata=0;publicstaticvoidmain(){Log.d("JMM","start");newThread(newRunnable(){@Overridepublicvoidrun(){try{Thread.sleep(2000);}catch(InterruptedExceptione){e.printStackTrace();}data=1;re

java - 不必要地使用 volatile 关键字——这很危险吗?

如果实际上不需要标记为volatile,那么在Java中将变量设置为“volatile”有什么坏处吗?...还是像我经常读到的那样只是“不必要的”。作为一个涉足多线程的人,但不是计算机科学家,我目前的想法是“如果有疑问,就让它变易变”。 最佳答案 明显的影响是一些小的性能影响,因为编译器被禁止使用certainoptimizations。然而,更糟糕的影响是虚假的安全感。仅仅因为一个变量是易变的并不意味着用它做的所有事情现在都是线程安全的,除非对它的所有操作都是原子的(否则该变量的观察和变化之间可能会断开连接)。仍然需要适当的同步块

安卓浏览器截断https ://scheme from complete qualifier

在我的应用程序中,我在CustomTabsIntent或WebView中显示外部HTML站点:if(customTabsIntent!=null)customTabsIntent.launchUrl(this,Uri.parse("http://some.where.com/site.html"));elsestartActivity(newIntent(Intent.ACTION_VIEW,Uri.parse("http://some.where.com/site.html")));但是该HTML的样式已经更新,但我的智能手机显示旧样式(旧字体等)。在*.html文件中有一个*.cs

c++ - 定义 volatile 类对象

volatile可以用于类对象吗?喜欢:volatileMyclassclassName;问题是它不能编译,当调用某些方法时,到处都会出现错误:错误C2662:“函数”:无法将“this”指针从“volatileMyClass”转换为“MyCLass&”这里有什么问题,如何解决?编辑:classQueue{private:structData*data;intamount;intsize;public:Queue();~Queue();boolvolatilepush(structDataelement);boolvolatilepop(structData*element);void

c++ - 基本类型 volatile 初始化是可观察的行为吗?

考虑这个函数:voidf(void*loc){autop=new(loc)volatileint{42};*p=0;}我已经通过clang、gcc和CL检查了生成的代码,它们都没有省略初始化。(答案可能被hardwer看到了:)。它是编译器对标准提供的扩展吗?该标准是否允许编译器不执行写入42?实际上对于类类型的对象,指定对象的构造函数在不考虑volatile限定符[class.ctor]的情况下执行:Aconstructorcanbeinvokedforaconst,volatileorconstvolatileobject.constandvolatilesemantics(10.

c++ - 使用 ref-qualifiers 成员函数重载的调用不明确

当使用G++(gcc4.8.1和MinGW4.8.2和编译我的代码时,我发现了一个奇怪的行为-std=gnu++1y标志)。本着SSCCE的精神,我分离出以下片段:structC{templateautof(X&&)const&{;}templateautof(X&&)&{;}templateautof(X&&)&&{;}};intmain(){inti{};#if1C{}.f(i);#endif#if1Cc{};c.f(i);#endifreturn0;}报错:main.cpp:Infunction'intmain()':main.cpp:29:10:error:callofover

c++ - clang 与 gcc : different code for volatile access

考虑这个例子:volatileunsignedintx;unsignedinty;voidf(){x/=2;}voidg(){y/=2;}当使用-Os编译时,clang-6.0在x64上为f和g生成相同的shrl(%rip)指令模式(见https://godbolt.org/g/hUPprL),而gcc-7.3为f()生成这个(见https://godbolt.org/g/vMcKVV):mov0x200b67(%rip),%eax#601034shr%eaxmov%eax,0x200b5f(%rip)#601034这只是一个错过的优化,还是gcc拒绝shrl(%rip)的理由?如果访

C++11/g++:lambda 中需要 std::qualifier,尽管给出了 "using namespace std"

我试图发现新的C++11标准(使用g++4.6.2)的一些优点。在“all_of”算法函数中使用lambda时,我遇到了一个关于std::限定符的奇怪问题。我正在“使用”代码片段开头所示的std命名空间。这使得for循环中pair变量的声明定义明确。但是,我在“all_of”算法中使用的lambda参数中尝试了相同的方法。在我意识到完整的std::合格的std::pair可以在那里工作,但只有pair不行之前,我遇到了几个难以理解的错误消息。我是否遗漏了重要的一点?lambda的声明发生在这个文件中,所以命名空间在这里应该仍然有效,对吧?或者所需的std::限定符是否依赖于不同文件中的