2012-04-03 60 views
1

自1998年以來,我一直在從事軟件開發(使用Java),並與許多不同的團隊合作解決各種不同的問題。從來沒有任何團隊使用並行編程方法。儘管多核處理器已經存在了一段時間,但我發現並行編程模型在現實世界中仍然在很大程度上被忽略來解決問題。那麼,爲什麼並行編程不經常使用?這似乎是讓事情更具伸縮性,更高效並通常可以提高程序性能的好方法。爲什麼不經常使用並行編程?

+7

不對的地方要問。 http://programmers.stackexchange.com/更相關。簡而言之,並行編程確實很難。 – 2012-04-03 07:07:58

+0

只是好奇:你一直在做什麼樣的問題? – ArjunShankar 2012-04-03 07:10:12

+0

有趣的一面是,並行編程在生物物理學中有很多使用,女性主要適應所需的思維方式。 – 2012-04-03 07:18:22

回答

0

真正的並行編程(在多個內核中分離問題)對於長時間運行的算法很有意義。大多數現實應用程序都是更多事件處理器通常這些事件將並行運行(考慮一個具有多個線程來處理請求的Web服務器)。當使用編程來解決一道算術題,它是應用較多(想想優化,數據分析等)

1

因爲就在一個多線程共享內存的環境中,如Java獲得並行編程是真的,真的。你幾乎可以保證做出很難診斷的錯誤。當然這是額外的努力。

此外,大多數人工作的程序類型是工作流系統。這些桌面版本不是性能至關重要的,並且通過讓每個請求由其自己的線程提供服務,webapps/server組件並不重要。這具有開發人員無需處理並行方面的優勢。

1

由於並行編程不適用於所有可能的問題,並且因爲編寫正確的併發程序很困難。特別是確保線程正確同步而沒有不必要的鎖定並不容易。此外,根據線程調度的時間發生的錯誤很難重現,查找和修復。如果每10萬次事務發生一次併發錯誤,並且這種錯誤發生在生產環境而不是您的開發系統上(我去過那裏......),那很令人討厭。

閱讀本書Java Concurrency in Practice,這是關於Java中併發編程的最佳書籍。

1

並行編程模型仍主要在現實世界中忽略解決問題

我認爲這是正在使用它解決了問題。但它並不是免費的,所以當一個簡單的串行(同步)解決方案運行良好時,最好不要並行(異步)執行任何操作。

0

我認爲你的看法是錯誤的,例如你有一個服務器端應用程序,應用程序服務器處理任何請求的線程(也許從線程池實現它)。

我想任何需要並行(多線程)模型的地方都需要編程並行。

有一個在下面的鏈接有用的信息:

相關問題