私は1998年よりJavaでソフトウェア開発を行ってきましたが、さまざまな問題を解決する多くのチームと協力してきました。どのチームでも並列プログラミング方法を使用したことはありません。しばらくの間、マルチコアプロセッサが使用されていましたが、現実世界では並列プログラミングモデルが依然として無視されています。だから、なぜ並列プログラミングは頻繁に使われないのですか?これは、スケーラビリティ、効率性を高め、一般的にプログラムのパフォーマンスを改善するための良い方法のようです。パラレルプログラミングが頻繁に使用されないのはなぜですか?
答えて
長所のあるアルゴリズムでは、実際の並列プログラミング(いくつかのコアで問題を分割する)は、ほとんどの場合面白いです。実際のアプリケーションのほとんどは、より多くのイベントプロセッサです。多くの場合、これらのイベントは並行して実行されます(要求を処理するために複数のスレッドを持つWebサーバーについて考える)。プログラミングは算数の問題を解決するために使用されている場合、それはより頻繁に使用されている(最適化、データ解析などを考える)
Javaなどのマルチスレッドの共有メモリ環境での並列プログラミングの権利を取得しているので、本当に、本当に難しいです。あなたは事実上、診断することが非常に難しい間違いをすることが保証されています。もちろんそれは余計な努力です。
さらに、ほとんどの人が作業するプログラムの種類は、ワークフローシステムです。これらのデスクトップバージョンはパフォーマンスに重要なものではなく、Webアプリケーション/サーバーコンポーネントは、各リクエストを独自のスレッドで処理することによって並列化するのは簡単です。これは、開発者が実際には並列の面に対処する必要がないという利点があります。
可能なすべての問題に対して、また正しい並行プログラムの作成が困難なため、並列プログラミングは適用できないためです。特にスレッドが不必要なロックなしで正しく同期されていることを確認することは簡単ではありません。また、スレッドスケジューリングのタイミングによって発生するバグは、再現、発見、修正するのが非常に難しいです。 100,000回のトランザクションごとに発生する並行性のバグがあり、開発システムではなく生産時に発生すると、非常に厄介です(私はそこにいました...)。
Java Concurrency in Practice、Javaでの並列プログラミングに関するベストブックをお読みください。
並列プログラミングモデルは、まだ大部分の問題
を解決するために、現実の世界では無視され、私はそれが、それは問題を解決場合に使用されているだと思います。しかし、それは無料ではないので、単純なシリアル(同期)ソリューションがうまく機能するときは、何も並行して(非同期に)実行しないほうがよいでしょう。
あなたの意見は間違っていると思います。サーバーサイドのアプリケーションを使用している場合、アプリケーションサーバーはスレッドによってリクエストを処理します(おそらくスレッドプールから取得できます)。
パラレル(マルチスレッド)モデルを必要とする場所は、プログラミングを並列に行う必要があります。
次のリンクで便利な情報があります:聞いて
- 1. なぜ "autoreconf"が頻繁に使用されていないのですか?
- 2. なぜセッションIDが頻繁に変更されるのですか?
- 3. なぜAVAudioSessionMediaServicesWereResetNotificationが頻繁に起こるのですか(iOS 10)?
- 4. Googleトレンド検索でセレンのような言葉が頻繁に頻繁に表示されるのはなぜですか?
- 5. ドロップボックスでchnagedファイルが頻繁にアップロードされない
- 6. C#4.0で使用されているCOMライブラリで、動的なタイプを頻繁に使用する必要があるのはなぜですか?
- 7. エンティティフレームワークのDBコンテキストが頻繁に使用される
- 8. デストラクタがコンストラクタより頻繁に呼び出されるように見えるのはなぜですか?
- 9. テーブルのPHPで最も頻繁に使用される値
- 10. ASPでビューを頻繁にコンパイルするのはなぜですか?
- 11. RequestFactory theory:Locator <>。find()が頻繁に呼び出されるのはなぜですか?
- 12. Cassandraは頻繁に使用されない破損データを検出できますか?
- 13. 頻繁なシーケンスの統計
- 14. マルチスレッドコードの頻繁なラグスパイク
- 15. Core Graphics- drawRect:頻繁に呼び出されない
- 16. 頻繁な消費ではなく定期的にWebサービスを使用する
- 17. Vimのより頻繁に使用された構成の
- 18. 頻繁に使用されるWebサイトのキャッシング戦略
- 19. GAEタスクがキュー上で指定された頻度よりも頻繁に実行されるのはなぜですか?
- 20. UIの頻繁なバグ(ナビゲーションからプッシュされたタブバー)
- 21. なぜこのループを頻繁に繰り返すのですか
- 22. Application_Endが頻繁
- 23. 実稼働環境でMysqlが頻繁に使用されなくなりました(エラー2006)
- 24. React Native:頻繁に呼び出すと警告メッセージが表示されない
- 25. SPARQL最も頻繁に使用される述語
- 26. カスタムフォントが使用されないのはなぜですか? Xamarin.Forms.iOS
- 27. Matplotlibで頻繁に使用されるPythonの珍しい構文要素
- 28. iOS 9.3シミュレータはappium 1.5.3で頻繁に閉じられますが、なぜですか?
- 29. Constはなぜオブジェクト宣言で頻繁に使用されますが、そのプロパティは変更できますか?
- 30. FCMトークンが頻繁に無効になっています
間違った場所。 http://programmers.stackexchange.com/がより適切です。短い答え、並列プログラミングは本当に難しいです。 –
好奇心が強い:あなたはどんな種類の問題を解決していますか? – ArjunShankar
面白いことに、並列プログラミングは生物物理学では多く使われており、女性はそれに必要な思考方法に主に適応しています。 –