我正在使用ACE線程,並且需要每個線程都有自己的int成員。 這可能嗎?有沒有辦法在使用ACE時使用線程局部變量?
回答
ACE稱之爲「線程專用存儲」。看看這個:ACE_TSS。這就是我所知道的全部,對不起沒有更多的幫助。
thread-local storage的維基百科頁面說,也有一個pthreads的方式來做到這一點。
它有時在pthread中調用TSS或TSD(線程特定的數據)。以下鏈接介紹瞭如何使用pthreads API創建此類數據:http://www.opengroup.org/onlinepubs/000095399/functions/pthread_key_create.html。在UNIX/UNIX-like平臺上,ACE僅使用引擎內的pthread。 – Void 2010-03-10 21:44:50
其平臺特定。例如Windows應該使用__declspec(thread)
。編譯器會利用TLS API(TlsAlloc,TlsFree和朋友),而在Win32上你不應該總是使用FLS(光纖本地存儲)而不是TLS,但TLS API無論如何都會在任何現代的Win32版本上默默地將你重定向到FLS。
是的。您可以使用ACS_TSS<type>
模板,該模板專爲「線程專用存儲」(即:線程局部變量)而設計。
詳情請參閱docs on ACE_TSS。
你知道我可以如何設置所有線程的初始值? – amitlicht 2010-03-10 22:38:05
GCC直接支持TLS for some targets。您可以使用GCC特定的__thread
關鍵字來定義線程局部變量(必須是靜態或全局變量)。
libACE本身內置了線程本地內容,您可以查看documentation並查看example code。
沒有辦法讓ACE_TSS爲所有線程設置初始值;你可以在線程函數輸入後輕鬆設置初始值。
- 1. 有沒有辦法跨模塊使用局部變量?
- 2. 使用遞歸沒有局部變量
- 3. 有沒有辦法檢查在Javascript(或局部變量)一clousure
- 4. 使用const局部變量有沒有運行時好處?
- 5. PHP:有沒有辦法在對象構造函數中使用全局變量?
- 6. 有沒有辦法在PageTemplate中使用剃刀變量功能
- 7. 有沒有辦法在Java類中使用gradle變量
- 8. 有沒有辦法在對象名稱中使用變量?
- 9. 有沒有辦法在'FROM'子句中使用PLSQL變量?
- 10. 有沒有辦法在python中重新使用線程工作?
- 11. 有沒有辦法在多個線程中使用asyncio.Queue?
- 12. 有沒有辦法可以禁用全局變量?
- 13. 有沒有辦法用rspec檢查內部方法變量?
- 14. 有沒有辦法讓在RegEx.Replace中使用的變量在.NET中使用?
- 15. 有沒有辦法讓在RegEx.Replace中使用的變量在.NET中使用?
- 16. 有沒有辦法使用PHP從外部文檔引用變量?
- 17. 有沒有辦法在stackview中有一個全局變量?
- 18. 有沒有辦法讓在Eclipse中排列所有的局部變量?
- 19. 有沒有辦法在調用RenderComponentPresentation時傳遞一個變量?
- 20. VBA中有沒有辦法知道未使用的變量?
- 21. 有沒有辦法使用JDBC Connector設置mysql變量?
- 22. 有沒有辦法使用setValue:forKey將採取C型變量?
- 23. 有沒有辦法使用HTML 5/JS鎖定數量變化?
- 24. 有沒有辦法查看變量使用多少內存?
- 25. specs2:有沒有辦法在使用Mockito的同時使用doNothing?
- 26. 有沒有辦法在多線程應用程序中安全地使用errno?
- 27. 有沒有辦法在java中創建全局變量?
- 28. 有沒有辦法避免有全局變量來實現qsort
- 29. 有沒有辦法改變使用C++的MFC線程的語言環境
- 30. 有沒有辦法在使用GCC時禁止在C/C++中聲明全局變量?
出於好奇,你真的需要使用TSS嗎?你可以簡單地在線程堆棧中聲明變量,或者你在尋找一些方法來阻止其他線程訪問你的變量嗎?如果後者,爲什麼不使用鎖?有些人認爲TSS主要是傳統接口的柺杖(例如,使errno線程安全),並且鎖定是更好的方法。我不主張這個或那個。因人而異。 – Void 2010-03-10 22:11:22
我認爲TSS實際上是這種情況下最優雅的解決方案。我有n個線程,每個線程都應該有自己的變量(有自己的值)。 – amitlicht 2010-03-10 22:44:18
您提到希望每個線程都有自己的「成員」。這表明你正在使用類來表示你的線程。如果是這樣,那麼簡單地給這個類一個正常的成員變量。每個線程都有自己的類實例,所以它也有它自己的單獨的成員變量。 – 2010-03-11 01:06:23