我需要在 C 中使用一个原子变量,因为这个变量是跨不同线程访问的。不想要竞争条件。
我的代码在 CentOS 上运行。我有哪些选择?
Delphi 10.2(支持Linux)具有跨平台功能AtomicExchange,相当于Windows InterlocekdEchange.到现在为止还挺好...
我必须使用没有AtomicExchangeAdd等效的InterlockedExchangeAdd来移植Win32代码.
我的问题是:在为Linux编译时,我可以使用什么来替换InterlockedExchangeAdd?
我正在寻找一种原子地增加短路的方法,然后返回该值.我需要在内核模式和用户模式下执行此操作,因此它在C语言下,在Linux下,在Intel 32位架构上.不幸的是,由于速度要求,互斥锁不是一个好的选择.
有没有其他方法可以做到这一点?在这一点上,似乎唯一可用的选项是内联一些程序集.如果是这样的话,有人能指出我适当的指示吗?
int val = memLoc[index++];
还是更好
int val = memLoc[index++ & 0xFF];
尝试从共享环缓冲区执行线程安全读取,其中每个调用获得下一个值 - 并且我希望它可以锁定,如果它发生了TON那么可能.没有Boost/C++ 11允许:(