POSIX定时器timer_create()以及线程中的gettid() 和pthread_self()

POSIX定时器:


最强大的定时器接口来自POSIX时钟系列,其创建、初始化以及删除一个定时器的行动被分为三个不同的函数:
timer_create()(创建定时器)
timer_settime()(初始化定时器)
timer_delete(销毁它)

关于POSIX定时器,可参考这篇文章,写的很详细,在此不赘述。

下面是看论坛是发现的问题,记录在此了

linux多线程环境下gettid() pthread_self() 两个函数都获得线程ID
linux使用进程模拟线程,gettid 函数返回实际的进程ID,pthread_self 函数返回 pthread_create创建线程时的ID。

到底那个是线程的ID呢,一个线程不能有两个ID吧?

参考:
gettid是内核中的线程的ID, pthread_self是POSIX thread ID 。

线程库实际上由两部分组成:内核的线程支持+用户态的库支持(glibc),Linux在早期内核不支持线程的时候,glibc就在库中(用户态)以纤程(就是用户态线程)的方式支持多线程了,POSIX thread只要求了用户编程的调用接口对内核接口没有要求。linux上的线程实现就是在内核支持的基础上以POSIX thread的方式对外封装了接口,所以才会有两个ID的问题。

如果想编写 可移植的 多线程代码,代码可运行于 Solaris、FreeBSD、Li

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值