这里写自定义目录标题
__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();
}