草庐IT

volatile-ttl

全部标签

java - Java 中的 volatile int 是线程安全的吗?

Java中的可变int是线程安全的吗?也就是说,它可以在不加锁的情况下安全地读写吗? 最佳答案 是的,您可以安全地对其进行读取和写入-但您不能执行任何复合操作,例如安全地递增它,因为这是一个读取/修改/写入循环。还有一个问题是它如何与对其他变量的访问进行交互。volatile的确切性质坦率地令人困惑(参见memorymodelsectionoftheJLSformoredetails)-我会个人通常使用AtomicInteger相反,作为一种更简单的方法来确保我做对了。 关于java-J

java - 为什么 java 5+ 中的 volatile 不能确保来自另一个线程的可见性?

根据:http://www.ibm.com/developerworks/library/j-jtp03304/Underthenewmemorymodel,whenthreadAwritestoavolatilevariableV,andthreadBreadsfromV,anyvariablevaluesthatwerevisibletoAatthetimethatVwaswrittenareguaranteednowtobevisibletoB并且互联网上的许多地方都声明以下代码不应该打印“错误”:publicclassTest{volatilestaticprivateinta

kotlin - 如何在 Kotlin 中使用 volatile

我尝试过这样的事情:privatevolatilevarinstanceState:InstanceState=InstanceState.startsError:'Expectedmemberdeclaration'像这样:privatevolatilevarinstanceState:InstanceState=InstanceState.startsError:'Propertygetterorsetterexpected'Kotlin不支持Volatile? 最佳答案 您可以使用@Volatile将属性标记为volatile

mongodb - mongodb的ttl集合有什么好处? vs 从管家那里清除数据?

我一直在考虑使用内置TTL功能,但是动态更改过期日期并不容易。由于mongodb正在使用后台任务清除数据。仅根据“>certain_date”编写我自己的清除功能并每天运行一次是否有任何缺点?这样,我可以动态更改TTL值,并且此日期字段不必是单个索引。我可以将此字段作为复杂索引的一部分重用,以最大限度地减少索引数量。 最佳答案 有两种方法可以设置expirationdateonaTTLcollection:在全局级别,创建索引时每个文档,作为文档中的一个字段这些模式是专有的。全局到期如果您希望所有文档在创建后3个月过期,请使用第一种

mongodb - mongodb的ttl集合有什么好处? vs 从管家那里清除数据?

我一直在考虑使用内置TTL功能,但是动态更改过期日期并不容易。由于mongodb正在使用后台任务清除数据。仅根据“>certain_date”编写我自己的清除功能并每天运行一次是否有任何缺点?这样,我可以动态更改TTL值,并且此日期字段不必是单个索引。我可以将此字段作为复杂索引的一部分重用,以最大限度地减少索引数量。 最佳答案 有两种方法可以设置expirationdateonaTTLcollection:在全局级别,创建索引时每个文档,作为文档中的一个字段这些模式是专有的。全局到期如果您希望所有文档在创建后3个月过期,请使用第一种

mongodb TTL不删除文档

我有一个简单的架构,例如:{_id:String,//autogeneratedkey:String,//thereisauniqueindexonthisfieldtimestamp:Date()//settocurrenttime}然后我像这样设置TTL索引:db.sess.ensureIndex({"timestamp":1},{expireAfterSeconds:3600})我希望记录会在1小时后被删除,但它永远不会被删除。我打开了详细日志记录,我看到TTLMonitor正在运行:TueSep1010:42:37.081[TTLMonitor]TTL:{timestamp:1

mongodb - 同一集合中的不同文档的不同 TTL?

我正在为我的session使用AdministratorSession集合。当他单击“记住我”时,我希望在3600分钟后删除session文档,否则为30分钟。可能吗?如果不是,那我有什么选择?我在这里尝试使用简单的方法,但它会创建索引并将TTL值设置为创建的第一个文档。例如,如果一个文档ttl设置为30和3600旁边,它们都将在30分钟后被删除。这是我目前完成此任务的方法。publicAdministratorSessionAdd(stringip,boolremember){varrandom=newRandom();varsession=newAdministratorSessi

c# - 嵌套文档上的 MongoDb TTL 是可能的吗?

我想知道是否可以在嵌套文档上使用TTL。场景我有Account,里面有Sessions。Sessions需要在30分钟后过期。我已经设置了所有内容,但很明显,当我在Account.Sessions.EndDateTime上设置TTL索引时,它会删除整个Account。我可以确保它只删除Session吗?这就是它在数据库中的样子。注意当EndDateTime到来时它将如何删除整个Account而不仅仅是Session。{"_id":ObjectId("53af273888dba003f429540b"),"Email":"steve@s3te5ve.com","PasswordHash"

c++ - volatile struct = struct 不可能,为什么?

structFOO{inta;intb;intc;};volatilestructFOOfoo;intmain(void){foo.a=10;foo.b=10;foo.c=10;structFOOtest=foo;return0;}这不会编译,因为structFOOtest=foo;产生错误:error:bindingreferenceoftype'constFOO&'to'volatileFOO'discardsqualifiers如何在C++(C++11之前)中将volatilestruct复制到另一个struct中?很多人建议只删除volatile,但在这种情况下我不能这样做,因

c++ - 用于线程控制的 volatile bool 是否被认为是错误的?

根据我对thisquestion的回答,我开始阅读关键字volatile以及关于它的共识。我看到有很多关于它的信息,一些旧的现在看起来是错误的,还有很多新的说它在多线程编程中几乎没有位置。因此,我想澄清一个具体的用法(在SO上找不到确切的答案)。我还想指出,我确实了解编写多线程代码的一般要求以及为什么volatile不能解决问题。不过,我在我工作的代码库中看到使用volatile进行线程控制的代码。此外,这是我使用volatile关键字的唯一情况,因为所有其他共享资源都是正确的同步。假设我们有这样一个类:classSomeWorker{public:SomeWorker():isRun