当前位置:  技术问答>linux和unix

新手求教LINUX下的原子操作该怎么写

    来源: 互联网  发布时间:2017-02-09

    本文导语:  在WINDOWS下这么写: const long tId = GetCurrentThreadId();//获取当前线程ID                   volatile long m_lThreadId;//之前保存的线程ID if (_InterlockedCompareExchange(&m_lThreadId, tId, 0) == 0)                  ...

在WINDOWS下这么写:

const long tId = GetCurrentThreadId();//获取当前线程ID
                  volatile long m_lThreadId;//之前保存的线程ID
if (_InterlockedCompareExchange(&m_lThreadId, tId, 0) == 0)
                   {
                       //操作
                    }



在LINUX下,该怎么实现这个原子操作,让线程一个一个来执行????
//注意,是原子操作,不是内核锁哦

|
内核一般都用gcc的嵌入汇编格式搞成lock前缀的汇编指令了,
用户级的,也可以一样用,但一般的多线程库里面有。

想intel的 tbb 库那些应该也有吧。

我自己用的是boost 库里面的找的一个,他封装成_InterlockedCompareExchange 这样的形式了,在boost的 interprocess的detail里面,他们封装了跨平台的接口了,不过好像好几个boost库里面都有自己的实现。

gcc内部好像也有支持  看看这里http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Atomic-Builtins.html

另外  c++ 11 标准里面也新加有 atomic类型了,但不知道有编译器支持不。  网上有人搞了个 boost atomic的库,但好像还没被收入boost ,也可以参考一下吧。

我觉得要求一般的话,像我那样直接用boost interprocess的detail里面的就好了,但如果你不用boost可能就不是很方便,包装也一下gcc的 build-in 的函数来用也是可以的吧。文档支持很多平台

|
看看
/usr/include/c++/4.6.1/atomic
4.6.1这个版本可能有不同。

|
pthread_mutex_lock 如何?

    
 
 

您可能感兴趣的文章:

  • 新手求教:关于ftp命令的问题,请大家帮帮忙
  • 新手求教
  • 新手求教如何学习LINUX
  • linux 新手求教
  • 新手求教双系统开机启动问题
  • linux新手求教,ubuntu经常死机正常吗?
  • 新手求教——windows程序移植到unix下
  • 求教:新手安装red hat9 提示:cache line size too large
  • 求教——编译内核(新手大派送)
  • 新手求教:怎样去查找群组中有哪些用户?
  • 新手求教一个linux makefile的问题
  • 新手求教redhat7.3的启动问题!
  • 想通过交叉编译把open dpi移植到mips64目标平台上,新手求教??
  • 新手求教grep问题!
  • 新手简单问题求教
  • 网络新手求教!为何我的虚拟机ping不通物理机?
  • 【急】2道Linux Shell编程题,新手求教!!!
  • 新手求教:安装问题
  • 新手求教。万分急:(
  • 谁帮我看看这个程序有什么问题,新手求教
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 新手提问 在线等待,为什么我的程序中 new 操作符出错?
  • 新手上路》》》shell编程问题(操作文本文件)请高手赐教!!!!谢谢,焦急等待中
  • 我是java新手,请问java中与平台相关的操作是怎样实现的
  • 新手上路!请问如何在unix操作系统上编写带头文件的C程序呢?
  • 浙ICP备11055608号-3 iis7站长之家
  • 新手上路问题(二),同样是关于文件操作?
  • 新手求助一道编程题,关于文件操作的
  • RE.ER新手学堂:Linux操作系统应用的六大误区
  • 新手学堂:嵌入式Linux操作系统学习规划
  • 新手上路问题,java如何进行文件操作?
  • 新手如何加入开源项目 有什么好的c++,java 开源适合新手 请指点!
  • JDBC的问题,新手高手都来看看吧,说不定能帮帮我这个新手呢,谢谢!
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 新手关于驱动开发的疑问
  • 新手有关linux的问题!
  • 新手急求~~~~~~~~~~~~~~~~~~~
  • 新手学习该用哪个版本
  • 面向新手的终端辅助工具 Clicompanion
  • 我是个新手,请各位老兄给介绍基本好书?
  • 新手请教啦~~能不能帮忙推荐几本书
  • 我是新手
  • 新手:用WEB页面修改数据库中的表?
  • Java新手上路之问题
  • 我是一名新手,请问如何学java
  • (新手)这里怎么看到300篇以外的所有文章?(不是搜索)
  • 新手求助!
  • 新手上路,怎样判断网卡是否安装成功?
  • !!新手求救!!
  • 新手在此多谢了:SUN的宠物商店
  • 新手请教,我用VI时按ESC键,总是回嘟嘟嘟嘟响,请问如何去掉!谢谢!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3