原子的比较 compare

编程入门 行业动态 更新时间:2024-10-28 08:24:53

<a href=https://www.elefans.com/category/jswz/34/1770190.html style=原子的比较 compare"/>

原子的比较 compare

包含原子操作的链接:

InterlockedCompareExchange 模拟callonce

内存序 memory_order

 

现在假设有一个套接字状态的原子变量 atomic_int socketState;

在一个设计不良的多线程环境中, N个线程都会修改此状态,但只能执行一次;

enum EnumSocketState { SocketStateNone = 0  , SocketStateAlive = 1, SocketStateClosed = 2};std::atomic_int socketState( EnumSocketState::SocketStateNone ); //状态//只修改一次
bool changeSocketStateAlive() {int iExp = EnumSocketState::SocketStateNone;return socketStatepare_exchange_strong(iExp,EnumSocketState::SocketStateAlive);
}unsigned int __stdcall  thread_func(void * arg) //线程函数
{using namespace std;if(changeSocketStateAlive()) {cout << "tid: " << GetCurrentThreadId() << " change" << endl;}return 0;
}

 

原子的比较:

bool isSocketAlive() {int iExp = EnumSocketState::SocketStateAlive;return socketStatepare_exchange_strong(iExp,iExp);
}

 

更多推荐

原子的比较 compare

本文发布于:2024-03-09 00:14:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1722974.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:原子   compare

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!