[英]How does pthread_self() always succeed?
我在学习 pthread 的时候,手册上说pthread_self()
总是成功的。
错误
此功能总是成功。
怎么会这样? 我们如何确定一个函数是否总是会成功?
尝试从代码中寻找答案,遇到如下代码:
# define THREAD_SELF \
({ struct pthread *__self; \
asm ("movl %%gs:%c1,%0" : "=r" (__self) \
: "i" (offsetof (struct pthread, header.self))); \
__self;})
我没有在struct pthread
看到字段header.self
,我是否查看了错误的定义? %c1
是什么意思? 输入i
未使用吗?
pthread_self()
返回当前运行线程的标识符。 它必须由“当前运行的线程”调用,因此该标识符必须存在。
怎么会失败呢? 这与我们都假设x++;
等表达式的方式相同x++;
或y = x / z
不能失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.