[英]Using __thread in c99
我想使用__thread存儲類將一些變量定義為特定於線程的。 但是三個問題讓我猶豫不決:
回答您的具體問題:
__thread
thread變量以每個新線程中的初始值開始。 在實現C / POSIX之外(例如errno
等),在我看來,線程局部存儲類實際上並不是非常有用。 它幾乎是一個避免以上下文指針或類似形式干凈地繞過必要狀態的拐杖。 您可能認為繞過像qsort
這樣不帶上下文指針的破壞接口可能很有用,但不幸的是,不能保證qsort
會在調用qsort
的同一個線程中調用比較函數。 它可能會破壞作業並在多個線程中運行它。 對於大多數其他可以采用這種解決方法的接口也是如此。
你可能想讀這個:
http://www.akkadia.org/drepper/tls.pdf
1)MSVC不支持C99。 GCC和其他編譯器都嘗試GCC兼容性。
編輯此處提供了對__thread
的編譯器支持的細分:
http://chtekk.longitekk.com/index.php?/archives/2011/02/C8.html
2)只有C ++支持初始化程序,它必須是常量。
3)非多線程應用程序是單線程應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.