系统调用API

这里写自定义目录标题

__thread

//__thread是GCC内置的线程局部存储设施,__thread变量每一个线程有一份独立实体,各个线程的值互不干扰。
//可以用来修饰那些带有全局性且值可能变,但是又不值得用全局变量保护的变量。

__builtin_expect

//__builtin_expect作用是将“分支转移”的信息提供给编译器,
//这样编译器可以对代码进行优化,以减少指令跳转带来的性能下降。

inline int tid()
  {
    //__builtin_expect作用是将“分支转移”的信息提供给编译器,
    //这样编译器可以对代码进行优化,以减少指令跳转带来的性能下降。t_cachedTid=0的概率接近0
    if (__builtin_expect(t_cachedTid == 0, 0))
    {
      cacheTid();
    }
    return t_cachedTid;
  }

SYS_gettid

/与getpid()函数不同的是,Linux并没有直接给一个gettid()的API,
//而是使用syscall()直接用SYS_gettid的系统调用号去获取线程号。

pid_t gettid()
{
  //与getpid()函数不同的是,Linux并没有直接给一个gettid()的API,
  //而是使用syscall()直接用SYS_gettid的系统调用号去获取线程号。
  return static_cast<pid_t>(::syscall(SYS_gettid));
}
bool CurrentThread::isMainThread()
{
  //线程组内存在一个线程ID等于进程ID,而该线程就是线程组的主线程。
  return tid() == ::getpid();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值