回答
模板函數是在編譯時創建的。模板屬性與線程安全完全正交。
這聽起來很酷,但這是什麼意思? :-) – DarkDust 2010-10-07 22:10:07
只是在以下情況下還不夠清楚:C++模板被稱爲「代碼生成器」。這意味着,當編譯器遇到模板時,它會爲您在該模板中使用的每種類型創建一套全新的機器指令。正因爲如此,你最終會得到兩個完全獨立的函數。 int函數
@Bryan:爲typedef'd類型創建不同的堆棧框架嗎?我對編譯器內部的知識有點不穩定。 – slashmais 2010-10-07 22:18:33
模板功能只是......所使用的編譯器生成「正常」的功能模板。所以它和普通功能一樣,沒有區別。
它們沒有比任何其他類型的函數更多或更少的線程安全。
+1:換句話說,沒有。 – 2010-10-07 22:13:48
@John Dibling:換句話說,* mu *。 http://www.catb.org/jargon/html/M/mu.html – 2010-10-07 22:21:05
@Shmoopty:好多了 – 2010-10-07 23:22:46
我能想到的線程安全的唯一方法受着是,如果someMethod<typename T>()
不是線程安全的,然後它仍然會好起來的一個線程上運行someMethod<int>()
同時someMethod<std:string>()
其他工作,只要缺乏線程安全性並非來自它們都調用某些非模板化功能。
哪裏別的東西是保證只有一個線程正在做一個特定的任務,並以每次一個特定類型的情況似乎不太可能,但。
- 1. 是否是setlocale線程安全函數?
- 2. C#數組是否線程安全?
- 3. 使用「不安全」線程函數是否安全?
- 4. .NET模塊是否線程安全?
- 5. C#委託是否線程安全?
- 6. 是否mysql_insert_id線程安全?
- 7. 是否log4j線程安全?
- 8. NSPasteboard是否線程安全?
- 9. RegExp.MatchString是否線程安全?
- 10. SeekableStream是否線程安全?
- 11. 線程是否表示線程安全?
- 12. 是System.ServiceModel.Channels.BufferManager是否線程安全?
- 13. MSVC的時間函數是否線程安全?
- 14. 多線程調用相同的函數是否安全?
- 15. C#中的yield return是否是線程安全的?
- 16. 部分線程安全是否使Java類線程安全?
- 17. 這段代碼是否是線程安全的C++
- 18. 進程線程是否安全?
- 19. Android中的java.util.Observable是否線程安全?
- 20. apache線程的apr_pool_destroy()是否安全?
- 21. Java.sql的getRow()線程是否安全?
- 22. MyBatis中的selectKey線程是否安全?
- 23. Linux中gettimeofday函數線程是否安全?
- 24. 微軟的T4模板引擎不是線程安全的
- 25. 是C#中的CreateDirectory()線程安全嗎?
- 26. C socket API是線程安全的嗎?
- 27. concurrentMap.keySet()。toArray()線程是否安全?
- 28. 這個類是否線程安全?
- 29. glibc是否執行fprintf()線程安全?
- 30. 這段代碼是否線程安全?
答案是「否」。現在問題變成了,你知道什麼是「線程安全」真的意味着什麼嗎? – 2010-10-07 22:15:08
@John Dibling:其他人比我能解釋得更好;請看這裏:http://en.wikipedia.org/wiki/Thread_safety – slashmais 2010-10-07 22:25:36
他不是要求教科書定義線程安全性,而是要求你理解這個術語。維基百科沒有告訴我們,這在回答這個問題時很重要。 – jalf 2010-10-07 23:03:39