草庐IT

Atomic类

全部标签

mongodb - 运行 updateOne 时出现错误 : the update operation document must contain atomic operators,

在我的收藏中,只有一个文档。>db.c20160712.find(){"_id":ObjectId("57ab909791c3b3a393e9e277"),"Dimension_id":2,"Attribute":"good","Hour":"20160712_06","Frequency_count":100我想运行updateOne将文档替换为另一个文档。但是为什么会出现Error:theupdateoperationdocumentmustcontainatomicoperators?>db.c20160712.updateOne({"Attribute":"good"},{"T

node.js - MongoDB atomic "findOrCreate": findOne, 如果不存在则插入,但不更新

正如标题所说,我想通过_id对文档执行查找(一个),如果不存在,则创建它,然后无论是找到还是创建,都在回调中返回.如果它存在,我不想更新它,就像我读过的findAndModify一样。我在Stackoverflow上看到了许多其他关于此的问题,但同样,不想更新任何内容。我不确定是否通过创建(不存在),这实际上是每个人都在谈论的更新,这一切都令人困惑:( 最佳答案 从MongoDB2.4开始,不再需要依赖唯一索引(或任何其他解决方法)来执行类似findOrCreate的原子操作。感谢the$setOnInsertoperator2.4

java - "atomic"在编程中是什么意思?

在EffectiveJava一书中,它指出:Thelanguagespecificationguaranteesthatreadingorwritingavariableisatomicunlessthevariableisoftypelongordouble[JLS,17.4.7].在Java编程或一般编程的上下文中,“原子”是什么意思? 最佳答案 举个例子:假设foo是一个long类型的变量,那么下面的操作就不是原子操作了(在Java中):foo=65465498L;确实,变量是使用两个单独的操作写入的:一个写入前32位,第二个

c++ - 使用显式栅栏和 std::atomic 有什么区别?

假设对齐指针加载和存储在目标平台上自然是原子的,这有什么区别://Case1:Dumbpointer,manualfenceint*ptr;//...std::atomic_thread_fence(std::memory_order_release);ptr=newint(-4);这个://Case2:atomicvar,automaticfencestd::atomicptr;//...ptr.store(newint(-4),std::memory_order_release);还有这个://Case3:atomicvar,manualfencestd::atomicptr;//

c++ - 使用显式栅栏和 std::atomic 有什么区别?

假设对齐指针加载和存储在目标平台上自然是原子的,这有什么区别://Case1:Dumbpointer,manualfenceint*ptr;//...std::atomic_thread_fence(std::memory_order_release);ptr=newint(-4);这个://Case2:atomicvar,automaticfencestd::atomicptr;//...ptr.store(newint(-4),std::memory_order_release);还有这个://Case3:atomicvar,manualfencestd::atomicptr;//

C++11:用 atomic<bool> 成员编写 move 构造函数?

我有一个带有原子成员变量的类:structFoo{std::atomicbar;/*...lotsofotherstuff,notrelevanthere...*/Foo():bar(false){}/*Trivialimplementationfailsingcc4.7with:*error:useofdeletedfunction‘std::atomic::atomic(consttd::atomic&)’*/Foo(Foo&&other):bar(other.bar){}};Foof;Foof2(std::move(f));//usethemovemove构造函数应该是什么样子的

C++11:用 atomic<bool> 成员编写 move 构造函数?

我有一个带有原子成员变量的类:structFoo{std::atomicbar;/*...lotsofotherstuff,notrelevanthere...*/Foo():bar(false){}/*Trivialimplementationfailsingcc4.7with:*error:useofdeletedfunction‘std::atomic::atomic(consttd::atomic&)’*/Foo(Foo&&other):bar(other.bar){}};Foof;Foof2(std::move(f));//usethemovemove构造函数应该是什么样子的

C++ std::atomic 与 Boost atomic

在我的应用程序中,我有一个int和一个bool变量,它们由多个线程访问(多次写入/读取)。目前,我正在使用两个互斥锁,一个用于int,一个用于bool来保护这些变量。我听说过使用原子变量和运算符来编写无锁多线程程序。我的问题是原子变量和运算符的定义是什么?std::atomic和boost/atomic.hpp?哪个更标准或更流行?这些库是否依赖于平台?我正在使用gnugcc4.6目前是Linux,但理想情况下它应该是跨平台的。我听说“原子”的定义实际上也取决于硬件。谁能解释一下?在多个线程之间共享bool变量的最佳方式是什么?我不想使用“volatile”关键字。这些代码是线程安全的

C++ std::atomic 与 Boost atomic

在我的应用程序中,我有一个int和一个bool变量,它们由多个线程访问(多次写入/读取)。目前,我正在使用两个互斥锁,一个用于int,一个用于bool来保护这些变量。我听说过使用原子变量和运算符来编写无锁多线程程序。我的问题是原子变量和运算符的定义是什么?std::atomic和boost/atomic.hpp?哪个更标准或更流行?这些库是否依赖于平台?我正在使用gnugcc4.6目前是Linux,但理想情况下它应该是跨平台的。我听说“原子”的定义实际上也取决于硬件。谁能解释一下?在多个线程之间共享bool变量的最佳方式是什么?我不想使用“volatile”关键字。这些代码是线程安全的

使用 header `<atomic>` 实现自旋锁的 C++11

我实现了SpinLock类,如下structNode{intnumber;std::atomic_boollatch;voidadd(){lock();number++;unlock();}voidlock(){boolunlatched=false;while(!latch.compare_exchange_weak(unlatched,true,std::memory_order_acquire));}voidunlock(){latch.store(false,std::memory_order_release);}};我实现了上面的类并创建了两个线程,每个线程调用同一Node类