当前位置: 首页>>代码示例>>C++>>正文


C++ atomic::compare_exchange_strong方法代码示例

本文整理汇总了C++中atomic::compare_exchange_strong方法的典型用法代码示例。如果您正苦于以下问题:C++ atomic::compare_exchange_strong方法的具体用法?C++ atomic::compare_exchange_strong怎么用?C++ atomic::compare_exchange_strong使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在atomic的用法示例。


在下文中一共展示了atomic::compare_exchange_strong方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: unlock

 void unlock() {
     tid zero(0);
     tid thread_id = this_thread::get_id();
     if(!block.compare_exchange_strong(thread_id, zero, memory_order_release)) {
         throw new exception;
     }
 }
开发者ID:okalitova,项目名称:programming_tasks,代码行数:7,代码来源:futex_aquire_release.cpp

示例2: unlock

 void unlock(int threadId) {
     int freeFlag = -1, toReplace = threadId;;
     if (!owner.compare_exchange_strong(threadId, freeFlag)) {
         cerr << "Current owner " << threadId << " but "
         << "Thread number " + to_string(toReplace)
         << " is not the owner!" << endl;
     }
 }
开发者ID:alexlokotochek,项目名称:parallels_cpp,代码行数:8,代码来源:main.cpp

示例3: lock

 void lock() {
     tid zero(0);
     tid thread_id = this_thread::get_id();
     while(!block.compare_exchange_strong(zero, thread_id, std::memory_order_acquire)) {
         std::this_thread::yield();
         zero = tid(0);
     }
 }
开发者ID:okalitova,项目名称:programming_tasks,代码行数:8,代码来源:futex_aquire_release.cpp

示例4: foo

int foo(atomic<int>& x)
{
  for(size_t n = 0; ; ++n)
  {
    auto expected = x.load();
    auto desired = 0;
    x.compare_exchange_strong(
      expected,
      desired);

    if(n == loop)
      return desired;
  }
}
开发者ID:DemonGiggle,项目名称:ClangThreadSanitizerTests,代码行数:14,代码来源:threadsanitizer_atomic_int.cpp

示例5: IncrementSharedValue10000000Times

void IncrementSharedValue10000000Times(RandomDelay& randomDelay)
{
    int count = 0;
    while (count < 10000000)
    {
        randomDelay.doBusyWork();
        int expected = 0;
        if (flag.compare_exchange_strong(expected, 1, memory_order_relaxed))
        {
            // Lock was successful
            sharedValue++;
            flag.store(0, memory_order_relaxed);
            count++;
        }
    }
}
开发者ID:preshing,项目名称:AcquireRelease,代码行数:16,代码来源:main.cpp

示例6: lock

 void lock(int threadId) {
     int expected = -1;
     while (!owner.compare_exchange_strong(expected, threadId)) {
         expected = -1;
     }
 }
开发者ID:alexlokotochek,项目名称:parallels_cpp,代码行数:6,代码来源:main.cpp

示例7: try_lock

 bool try_lock() {
     tid zero(0);
     tid thread_id = this_thread::get_id();
     if(!block.compare_exchange_strong(zero, thread_id)) return false;
     else return true;
 }
开发者ID:okalitova,项目名称:programming_tasks,代码行数:6,代码来源:futex_aquire_release.cpp


注:本文中的atomic::compare_exchange_strong方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。