草庐IT

volatile-qualifier

全部标签

java - 如果我在 Spring Framework 的 @PostConstruct 中初始化对象属性,我应该将它们标记为 volatile 吗?

假设我在Spring单例bean中做了一些初始化@PostConstruct(简化代码):@ServiceclassSomeService{publicDatasomeData;//notfinal,notvolatilepublicSomeService(){}@PostConstructpublicvoidinit(){someData=newData(....);}}我应该担心someData其他bean的可见性并标记它volatile?(假设我不能在构造函数中初始化它)第二种情况:如果我覆盖值在@PostConstruct(例如在显式初始化或构造函数初始化之后),所以写在@Po

java - 如果我在 Spring Framework 的 @PostConstruct 中初始化对象属性,我应该将它们标记为 volatile 吗?

假设我在Spring单例bean中做了一些初始化@PostConstruct(简化代码):@ServiceclassSomeService{publicDatasomeData;//notfinal,notvolatilepublicSomeService(){}@PostConstructpublicvoidinit(){someData=newData(....);}}我应该担心someData其他bean的可见性并标记它volatile?(假设我不能在构造函数中初始化它)第二种情况:如果我覆盖值在@PostConstruct(例如在显式初始化或构造函数初始化之后),所以写在@Po

spring - 如何使用运行时 "qualifier"变量动态注入(inject)服务?

在给定运行时值的情况下,我找不到注入(inject)组件/服务的简单方法。我开始阅读@Spring的文档:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-autowired-annotation-qualifiers但我找不到如何改变传递给@Qualifier注释的值。假设我有一个具有这种接口(interface)的模型实体:publicinterfaceCase{StringgetCountryCode();voidsetCountryCode(Str

spring - 如何使用运行时 "qualifier"变量动态注入(inject)服务?

在给定运行时值的情况下,我找不到注入(inject)组件/服务的简单方法。我开始阅读@Spring的文档:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-autowired-annotation-qualifiers但我找不到如何改变传递给@Qualifier注释的值。假设我有一个具有这种接口(interface)的模型实体:publicinterfaceCase{StringgetCountryCode();voidsetCountryCode(Str

c# - volatile 用法的可重现示例

我正在寻找一个可以演示volatile关键字如何工作的可重现示例。我正在寻找在没有标记为volatile的变量的情况下“错误”工作并且“正确”工作的东西。我的意思是一些示例,该示例将证明执行期间的写入/读取操作顺序与变量未标记为volatile时的预期不同,并且在变量未标记为volatile时也没有不同。我以为我得到了一个例子,但后来在其他人的帮助下我意识到它只是一段错误的多线程代码。WhyvolatileandMemoryBarrierdonotpreventoperationsreordering?我还找到了一个链接,该链接演示了volatile对优化器的影响,但它与我正在寻找的不

java - Spring 启动 : "No qualifying bean of type... found" when autowiring concrete class

我正在使用SpringBoot和SpringBootJPA编写一个组件。我有这样的设置:界面:publicinterfaceSomething{//methoddefinitions}实现:@ComponentpublicclassSomethingImplimplementsSomething{//implementation}现在,我有一个使用SpringJUnit4ClassRunner运行的JUnit测试,我想用它来测试我的SomethingImpl。当我这样做@AutowiredprivateSomething_something;它有效,但是@Autowiredprivat

java - java中的volatile变量和内存屏障

我有一个由链接节点组成的数据结构。您可以将其视为一个简单的LinkedList。列表的每个节点都包含一些值和指向另一个节点的next字段,如果它是最后一个节点则为null。第一个节点作为根,它没有值,它只指向下一个节点。所有其他节点实际上都是不可变的,一旦它们被创建,它们的值和它们的下一个字段在生命周期内都不会改变,除非正在处理与特定情况相关的结构。一个(只有一个)线程将新节点添加到列表的前面。它是通过构造一个新对象,设置它的字段并将下一个字段设置为根指向的对象,然后将根的下一个字段设置为这个新节点来完成的。其他节点浏览仅执行读取的结构。它们具有对根节点的引用,然后遍历其他节点,直到找

c++ - 为什么将引用计数器值读取为对 volatile 常量的引用?

在smart_ptr\detail\atomic_count_win32.hpp下的Boost1.5.1源代码中,有一个简洁的小原子引用计数器boost::detail::atomic_count。在第48行,他们做了一个我很好奇的类型转换:classatomic_count{public://...operatorlong()const{returnstatic_cast(value_);}private:longvalue_;为什么将计数器值强制转换为a-reference-to-a-volatile-constant-long(longconstvolatile&)?

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

我看过这句话:thegeneralruleis,ifyouhavevariablesofprimitivetypethatmustbesharedamongmultiplethreads,declarethosevariablesvolatile来自thisarticle,以及这句话:Ingeneral,anydatathatmaybeundatedasynchronouslyshouldbedeclaredtobevolatile.来自thispage,现在考虑到这个引入的规则,我想知道你能否举一个例子,说明尽管存在对数据的异步访问,但声明数据volatile在实践中没有用,或者没有

c++ - `static_cast<volatile void>` 对优化器意味着什么?

当人们试图在各种库中执行严格的基准测试时,我有时会看到这样的代码:autostd_start=std::chrono::steady_clock::now();for(inti=0;i这里使用volatile来防止优化器注意到被测代码的结果被丢弃,然后丢弃整个计算。当被测代码没有返回值时,说它是voiddo_something(int),然后有时我会看到这样的代码:autostd_start=std::chrono::steady_clock::now();for(inti=0;i(do_something(i+j));autostd_stop=std::chrono::steady_