
正文
linux的pthread_self与gettid的返回值和开销的区别
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
linux的pthread_self与gettid的返回值和开销的区别
linux的pthread_self与gettid的返回值和开销的区别
分类: 一些思考 2012-05-18 12:25 1700人阅读 评论(0) 收藏 举报
linux测试
pthread_self()是POSIX的实现,它的返回值是pthread_t,pthread_t在linux中实际是无符号长整型,即unsigned long。
gettid是系统调用,它的返回值是pid_t,在linux上是一个无符号整型。
测试机为Intel i7 860 2.8GHz,八核,各调用一千万次,二者效率基本一致,测试代码如下:
#include<stdio.h>
#include <sys/syscall.h>
#include <unistd.h>
#include <pthread.h>
pid_t gettid(void){
return syscall(SYS_gettid);
}
int main()
{
int i=0;
printf("%u %lu",gettid(),pthread_self());
for(i=0;i<10000000;i++)
{
gettid();
// pthread_self();
}
}
gettid()测试结果
[root@test]# time ./a.out real0m0.572s
user0m0.230s
sys0m0.342s
pthread_self()测试结果
[root@test]# time ./a.out real0m0.570s
user0m0.250s
sys0m0.321s








