草庐IT

Atomic类

全部标签

使用 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类

c++ - 初始化 std::atomic_bool?

我想使用std::atomic_bool因为我想要一个应该被不同线程访问的bool值。它是一个static成员变量。问题是我想用false作为第一个状态来初始化它。通常我会这样做:std::atomic_boolWorld::mStopEvent=false;但问题似乎是它没有将false作为构造函数。那么我应该如何初始化这样一个变量呢?我正在使用VS2012。 最佳答案 这是knownissueinVisualStudio2012(knownasVC11),您应该对现有的Connect项目进行投票,以便Microsoft知道它会影

c++ - 初始化 std::atomic_bool?

我想使用std::atomic_bool因为我想要一个应该被不同线程访问的bool值。它是一个static成员变量。问题是我想用false作为第一个状态来初始化它。通常我会这样做:std::atomic_boolWorld::mStopEvent=false;但问题似乎是它没有将false作为构造函数。那么我应该如何初始化这样一个变量呢?我正在使用VS2012。 最佳答案 这是knownissueinVisualStudio2012(knownasVC11),您应该对现有的Connect项目进行投票,以便Microsoft知道它会影

c++ - std::atomic<std::string> 是否正常工作?

我正在阅读AnthonyWilliams的“C++ConcurrencyinAction”和第5章,其中讨论了新的多线程感知内存模型和原子操作,他说:Inordertousestd::atomicforsomeuser-definedUDT,thistypemusthaveatrivialcopyassignmentoperator.据我了解,这意味着我们可以使用std::atomic如果以下返回true:std::is_trivially_copyable::value按照这个逻辑,我们应该不能使用std::string作为std::atomic的模板参数并让它正常工作。但是,以下代

c++ - std::atomic<std::string> 是否正常工作?

我正在阅读AnthonyWilliams的“C++ConcurrencyinAction”和第5章,其中讨论了新的多线程感知内存模型和原子操作,他说:Inordertousestd::atomicforsomeuser-definedUDT,thistypemusthaveatrivialcopyassignmentoperator.据我了解,这意味着我们可以使用std::atomic如果以下返回true:std::is_trivially_copyable::value按照这个逻辑,我们应该不能使用std::string作为std::atomic的模板参数并让它正常工作。但是,以下代

c++ - 标准的 atomic bool 和 atomic flag 之间的区别

我不知道std::atomic变量,但知道std::mutex(很奇怪!)由标准提供;但是有一件事引起了我的注意:标准提供了两种看似相同(对我而言)的原子类型,如下所列:std::atomicstd::atomic_flagstd::atomic_flag包含以下解释:std::atomic_flagisanatomicbooleantype.Unlikeallspecializationsofstd::atomic,itisguaranteedtobelock-free.Unlikestd::atomic,std::atomic_flagdoesnotprovideloadorsto

c++ - 标准的 atomic bool 和 atomic flag 之间的区别

我不知道std::atomic变量,但知道std::mutex(很奇怪!)由标准提供;但是有一件事引起了我的注意:标准提供了两种看似相同(对我而言)的原子类型,如下所列:std::atomicstd::atomic_flagstd::atomic_flag包含以下解释:std::atomic_flagisanatomicbooleantype.Unlikeallspecializationsofstd::atomic,itisguaranteedtobelock-free.Unlikestd::atomic,std::atomic_flagdoesnotprovideloadorsto

python - TransactionManagementError "You can' t 在使用信号时执行查询直到 'atomic' block 结束,但仅在单元测试期间

我在尝试保存DjangoUser模型实例时遇到TransactionManagementError,并且在其post_save信号中,我正在保存一些将用户作为外键的模型。上下文和错误与这个问题非常相似djangoTransactionManagementErrorwhenusingsignals但是,在这种情况下,错误仅在单元测试时发生。在手动测试中效果很好,但是单元测试失败了。我有什么遗漏的吗?以下是代码片段:views.py@csrf_exemptdefmobileRegister(request):ifrequest.method=='GET':response={"error"

python - TransactionManagementError "You can' t 在使用信号时执行查询直到 'atomic' block 结束,但仅在单元测试期间

我在尝试保存DjangoUser模型实例时遇到TransactionManagementError,并且在其post_save信号中,我正在保存一些将用户作为外键的模型。上下文和错误与这个问题非常相似djangoTransactionManagementErrorwhenusingsignals但是,在这种情况下,错误仅在单元测试时发生。在手动测试中效果很好,但是单元测试失败了。我有什么遗漏的吗?以下是代码片段:views.py@csrf_exemptdefmobileRegister(request):ifrequest.method=='GET':response={"error"

objective-c - 当我发现自己 100% 的时间都在使用非原子时,为什么 "atomic"是 Objective C 中的默认 @property 限定符?

在我作为iOS开发人员的几年中,我认为我从未在属性上使用过atomic。如果我可以看到由于线程导致的潜在竞争条件或数据完整性问题,那么在@property上使用atomic将无济于事。我使用传统的事务/工作单元线程安全技术(使用机制锁、信号量或其他)。有没有人有(或知道)使用atomic的实际示例?(我希望看到一些实际/实用的代码示例)在写了十亿次nonatomic之后,我还想知道为什么Apple决定将atomic设为默认值。 最佳答案 至于你遇到的第一个问题,可能是因为Although“atomic”meansthataccess