簡體   English   中英

pthread_self() 如何總是成功?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM