• 线程安全


    在UNIX的多线程下用到errno的时候,要留意下了,否则无法得到正确的errno。
    在AIX下,编译的时候需要加入-D_THREAD_SAFE
    在solaris下,编译的时候需要加入 -D_REENTRANT
    在hp-ux下,编译的时候 需要加入  -D_REENTRANT
    在linux下,不存在任何问题,可以放心大胆的使用
    通过这个问题,还学到一招,查看include头文件,我想在某些时候会起到些作用。
    比如,查看AIX下的/usr/include/errno.h文件,会发现这样的声明:
    #if defined(_THREAD_SAFE) || defined(_THREAD_SAFE_ERRNO)
    /*
    * Per thread errno is provided by the threads provider. Both the extern int
    * and the per thread value must be maintained by the threads library.
    */
    extern   int      *_Errno( void );
    #define errno    (*_Errno())
    #else
    extern int errno;
    #endif   /* _THREAD_SAFE || _THREAD_SAFE_ERRNO */
    所以不言而喻了,需要加入_THREAD_SAFE 或者 _THREAD_SAFE_ERRNO
    然后查看solaris的/usr/include/errno.h就不是这两个宏了。
    联想有时候编译某些开源代码的时候,会报一些错误,说找不到某些函数,有可能就是某些宏没有定义,查一查相关的inclue文件,没准就编过去了。
  • 相关阅读:
    在CentOS 8上安装Jitsi Meet
    centos8 安装docker
    [git]error: pack-objects died of signal
    Andorid 11调用系统裁剪
    XCode修改工程名(完美版)
    java分割后台日志
    五分钟搞定WebRTC视频录制
    一分钟教你构建属于你的视频会议SDK
    史上最全的WebRTC服务器技术选型分析
    数据库设计之思考
  • 原文地址:https://www.cnblogs.com/hbt19860104/p/2627104.html
Copyright © 2020-2023  润新知