本文整理汇总了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;
}
}
示例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;
}
}
示例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);
}
}
示例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;
}
}
示例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++;
}
}
}
示例6: lock
void lock(int threadId) {
int expected = -1;
while (!owner.compare_exchange_strong(expected, threadId)) {
expected = -1;
}
}
示例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;
}