隨着多核CPU在桌面上的興起,多線程技能將成爲程序員的寶貴資產。你可以爲想要了解線程編程的程序員推薦一些好的資源(書籍,教程,網站等)嗎?學習線程編程有什麼好的資源?
回答
看看香草薩特的「The Free Lunch Is Over」,然後他的一系列關於Effective Concurrency文章。
我說實話從來沒有讀過它自己,但Concurrent Programming in Java是一本書,我聽說推薦幾個人。
http://www.cilk.com/multicore-e-book/
這就是sitution的一個很好的概述,如果你正在尋找tuorials和書籍它可能是最好的指定語言爲出發點,因此您可以使用一些代碼陷入混亂。
Erlang編程語言提供了並行編程的簡單易用的風格。你可能永遠不會真正使用Erlang,但這些概念可以傳送到其他語言。您可能想要閱讀編程Erlang:並行世界軟件。
函數式編程的粉絲聲稱不需要學習任何新東西。只需使用純函數式語言,編譯器或解釋器就會自動並行處理所有內容。所以你可能想學習Haskell,OCaml或其他函數式語言。
約瑟夫阿爾巴哈利在C#中寫到這裏線程的一個很好的概述:
我讀過(大部分)Java Concurrency in Practice Brian Goetz撰寫,這是非常好的。
顯然有(使用Java的線程,鎖等具體實現),通過這本書上運行的基於Java的主題,但幾乎所有的原則可以應用到其他語言。
作者的主頁包含list of articles他寫的,其中包括一些線程相關的東西。也許從那裏開始,如果你喜歡他的風格,那就買這本書吧。
對於C#(或.NET中的併發編程)的一個很好的指導和參考,我建議在MSDN上使用Vance Morrison的MSDN What Every Dev Must Know About Multithreaded Apps文章。它包含了大量關於多線程開發的最佳實踐信息和注意事項
我不知道你到底在找什麼,但是如果你在做WindowsForms開發,以下博客文章值得每分鐘閱讀: WinForms UI Thread Invokes: An In-Depth Review of Invoke/BeginInvoke/InvokeRequred
我覺得如Boost.Threads是一個偉大的C++併發庫的學習,特別是如果你只是想以書面形式多線程應用程序啓動。代碼非常簡潔易懂,再加上下一個C++標準可能會包含一個基於Boost.Threads的線程庫(教程:http://www.ddj.com/cpp/184401518)
如果您想要做一個高度並行版本的簡單的任務,或看到真正的解決方案,你可能會比看項目wide finder更糟糕。基本上它是關於如何有效地執行日誌文件的並行正則表達式匹配,但是嘗試添加儘可能少的代碼。
參與者已經提交了許多不同語言的解決方案,並且發佈了performance results。原來的項目已經完成,現在有wide finder 2正在開展工作。
對於豐富,徹底治療的個體,擁有計算機科學與實踐之間的良好平衡,我建議The Art of Multiprocessor Programming。很多示例都是面向對象的代碼,即Java,其他語言分散在各處。這取決於所涉及的主題。我真的很喜歡這本書,它討論瞭如何在並行設計中實現常用算法。當然,還有更多!
對於pthreads的一般概念和處理,我真的很喜歡Programming with POSIX Threads。作爲它的庫和API,它在C.
對於Windows和C#開發人員,請查看Joe Duffy's blog。 Joe從事微軟開發部門的並行庫,基礎架構和編程模型。他有一本2008年11月發行的書名爲Concurrent Programming on Windows(Amazon link)。
另外,千萬不要錯過教父的博客:Herb Sutter的Sutter's Mill。他與Dobb博士的雜誌上的所有文章都有聯繫。點擊他的Concurrency category。
我保持linkblog併發文章,博客,以及在項目:
我通常張貼各種主題的每天一個鏈接或兩個(線程,演員,鎖定,並行編程)在各種環境中(Erlang,Java,Scala,.NET,C++,Ruby,Python等)。
CPU製造商的網站有一些有趣的內容:
http://developer.amd.com/documentation/articles/Pages/default.aspx#parallel
http://software.intel.com/en-us/multi-core
而且英特爾的開源線程庫有一些很好的參考:
這是Delphi專用的,但沒有理由爲什麼這個概念不適用於任何其他語言!
我寫上my blog多線程和併發在C++中。我還寫了一本關於C++併發性的書:C++ Concurrency in Action。
如果您使用C#,Gaston C. Hillar - Packt Publishing - http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/book的書籍「C#2008和2005線程編程」將幫助您。 強烈建議用於C#程序員,因爲您可以使用利用多核計算機的有趣示例下載代碼。這本書是一個很好的指導,有很多代碼來練習。它講述了故事,同時解釋了最困難的概念。
- 1. 學習網絡編程有什麼好的資源?
- 2. 學習如何編程動畫有什麼好的資源?
- 3. 學習COM編程有什麼好的資源?
- 4. .NET Stream編程有什麼好的學習資源?
- 5. 學習Grails有什麼好的資源?
- 6. 學習json有什麼好的資源?
- 7. 在Python中學習CGI編程的好資源是什麼?
- 8. 什麼是學習XNA的好資源?
- 9. 用於學習線程的資源
- 10. 用.net學習多線程的好源?
- 11. 學習pycURL有什麼好的教程?
- 12. 學習編程的好的音頻源?
- 13. 學習按位編程的資源?
- 14. 學習pyqt的好資源?
- 15. 良好的資源來學習IMAP編程
- 16. 學習使用Selenium來測試Rails應用程序有什麼好的資源?
- 17. 學習HttpContext,Request和Response有什麼好的資源?
- 18. 學習使用NAnt有什麼好的資源?
- 19. 學習如何實現Scheme宏有什麼好的資源?
- 20. 什麼是一些很好的機器學習編程練習?
- 21. 資源學習MFC程序員的GNOME應用程序編程?
- 22. 學習HTML和學習編程語言有什麼區別?
- 23. 對於有經驗的ASP.NET開發人員來說,學習Windows Forms/WPF編程有什麼好的資源?
- 24. 什麼是學習MASM代碼(不是HLA)的好資源?
- 25. 什麼是學習Zend框架的好資源?
- 26. 什麼是學習System.Speech API的好資源?
- 27. 什麼是學習仿製藥的好資源?
- 28. 什麼是學習人工神經網絡的好資源?
- 29. 什麼是學習高級SSIS的好資源?
- 30. 學習應用程序編程的最佳資源? (.Net/Cocoa/etc)
這是一個關於這個問題的好教程。 – spoulson 2008-09-26 12:42:34
這確實幫了我。 – ThatBloke 2008-10-09 13:04:35