CPU アーキテクチャの状況が変わりました。マルチコアは、ソフトウェアの開発方法を変えるトレンドです。私は C、C++、および Java でマルチスレッド開発を行い、さまざまな IPC メカニズムを使用してマルチプロセス開発を行いました。スレッドを使用する従来のアプローチでは、高度な並行性をサポートするハードウェアを開発者が利用することは容易ではないようです。
並行アプリケーションを作成する際の従来の課題を軽減するのに役立つ言語、ライブラリ、および開発手法は何ですか? 私は明らかに、デッドロックや競合状態などの問題を考えています。設計手法、ライブラリ、ツールなども興味深いものであり、利用可能なリソースを実際に活用し、確実に利用できるようにします。安全で堅牢なスレッド化されたアプリケーションを作成するだけでは、利用可能なすべてのコアを確実に使用できるわけではありません。
私がこれまでに見たものは次のとおりです。
- Erlang : プロセスベース、メッセージパッシング IPC、「アクターの同時実行モデル」
- Dramatis : Ruby および Python 用の俳優モデル ライブラリ
- Scala : 同時実行サポートが追加された JVM 用の関数型プログラミング言語
- Clojure : アクター ライブラリを使用した JVM 用の関数型プログラミング言語
- Termite : Erlang のプロセス アプローチと Scheme へのメッセージ パッシングのポート
他に何を知っていますか、何が効果的で、何を見るのが面白いと思いますか?