2012-04-03 7 views
1

私は1998年よりJavaでソフトウェア開発を行ってきましたが、さまざまな問題を解決する多くのチームと協力してきました。どのチームでも並列プログラミング方法を使用したことはありません。しばらくの間、マルチコアプロセッサが使用されていましたが、現実世界では並列プログラミングモデルが依然として無視されています。だから、なぜ並列プログラミングは頻繁に使われないのですか?これは、スケーラビリティ、効率性を高め、一般的にプログラムのパフォーマンスを改善するための良い方法のようです。パラレルプログラミングが頻繁に使用されないのはなぜですか?

+7

間違った場所。 http://programmers.stackexchange.com/がより適切です。短い答え、並列プログラミングは本当に難しいです。 –

+0

好奇心が強い:あなたはどんな種類の問題を解決していますか? – ArjunShankar

+0

面白いことに、並列プログラミングは生物物理学では多く使われており、女性はそれに必要な思考方法に主に適応しています。 –

答えて

0

長所のあるアルゴリズムでは、実際の並列プログラミング(いくつかのコアで問題を分割する)は、ほとんどの場合面白いです。実際のアプリケーションのほとんどは、より多くのイベントプロセッサです。多くの場合、これらのイベントは並行して実行されます(要求を処理するために複数のスレッドを持つWebサーバーについて考える)。プログラミングは算数の問題を解決するために使用されている場合、それはより頻繁に使用されている(最適化、データ解析などを考える)

1

Javaなどのマルチスレッドの共有メモリ環境での並列プログラミングの権利を取得しているので、本当に、本当に難しいです。あなたは事実上、診断することが非常に難しい間違いをすることが保証されています。もちろんそれは余計な努力です。

さらに、ほとんどの人が作業するプログラムの種類は、ワークフローシステムです。これらのデスクトップバージョンはパフォーマンスに重要なものではなく、Webアプリケーション/サーバーコンポーネントは、各リクエストを独自のスレッドで処理することによって並列化するのは簡単です。これは、開発者が実際には並列の面に対処する必要がないという利点があります。

1

可能なすべての問題に対して、また正しい並行プログラムの作成が困難なため、並列プログラミングは適用できないためです。特にスレッドが不必要なロックなしで正しく同期されていることを確認することは簡単ではありません。また、スレッドスケジューリングのタイミングによって発生するバグは、再現、発見、修正するのが非常に難しいです。 100,000回のトランザクションごとに発生する並行性のバグがあり、開発システムではなく生産時に発生すると、非常に厄介です(私はそこにいました...)。

Java Concurrency in Practice、Javaでの並列プログラミングに関するベストブックをお読みください。

1

並列プログラミングモデルは、まだ大部分の問題

を解決するために、現実の世界では無視され、私はそれが、それは問題を解決場合に使用されているだと思います。しかし、それは無料ではないので、単純なシリアル(同期)ソリューションがうまく機能するときは、何も並行して(非同期に)実行しないほうがよいでしょう。

0

あなたの意見は間違っていると思います。サーバーサイドのアプリケーションを使用している場合、アプリケーションサーバーはスレッドによってリクエストを処理します(おそらくスレッドプールから取得できます)。

パラレル(マルチスレッド)モデルを必要とする場所は、プログラミングを並列に行う必要があります。

次のリンクで便利な情報があります:聞いて

関連する問題