難易度:なし
複数のPharoインスタンスを起動し、ソケット経由で通信するか、最終データを共通ファイルに保存するようにしてください。あなたのOSはそれぞれのインスタンスを管理し、それを送信して別のコアで実行します。 OSProcessモジュールはそのような機能を提供し、HydraやRoarVMのような実装が成功していますが、問題は使用されていません。
実際に並列処理の最も難しいことは、それを使用する人々を得ることです。今日のハードウェアアプリケーションでは、単一コアの100%になることはめったにありません。私はほとんどPharoを10%以上にしました。
また、プログラミングのダイナミックプログラミング言語と同様、スモールトークは開発者のパフォーマンス言語であり、アプリケーションパフォーマンス言語ではありません。
実際にこのような処理の問題が発生した場合は、CやC++のようなアプリケーションのパフォーマンスを重視する言語を使用する必要があります。その言語を使用するのは難しいだけでなく、並列性さえも適切なライブラリであっても正しく行うことは非常に困難です。ハードウェアは非常に奇妙なデザインの賢明であり、あなたが知っておく必要があります。
これが、並列処理がこれらのプログラミング言語に適している理由です。もちろん、C/C++でライブラリを作って、Pharoや他の小さなトークを使っても構いません。 Pythonがこれを行います。 PythonとPharoはGILを使用していて、緑色のスレッドを持っている点で似ています。ちょっとしたことは、VMが直接アクセスできるようにスレッドをメインスレッドに戻さなければならないということですが、ソケット通信、パイプ、共有メモリマップファイルなどのような方法があります。
Pythonの並列ライブラリはすべてC/C++ベースです。
並列性そのものは、たとえ並列性を持っていても、コードが単一スレッドと単一コアで動作するほど遅くなる可能性がありますが、非常に扱いにくい問題です。しかし、これはアプリケーションのパフォーマンスに関する一般的な問題です。ハードウェアの仕組みを知っておく必要があるほど多くのパワーをミルクアウトしたいときです。
今日のハードウェアはスーパーコンプレックスです。言語はあなたの心配の中で最も少ないです。
だからこそSmalltalkでは可能ですが、率直に言えば興味がある人はあまりいません。 Pharoのメーリングリストで、私が過去2年間、たぶん1回か2回頻繁に出てくる並列性に関する質問を見ました。そして並行性に関してさえ、誰かがそれについての質問をすることは非常にまれです。
もちろん、重要な場所での「中断」は、コードで予想されるプロパティを破壊します。しかしこれはSmallTalk特有のものではありません。すべての並列言語にこの問題があります。彼らは、a)あなたが何かを中断することはできないと主張することによって解決するか、b)何があっても、トランザクション的で完全なものがあります。したがって、「スモールトークをパラレルにする」ことの重要な問題は、並列スレッドの追加、トランザクション安全性の追加(実行エンジンの部分の両方で)、プログラマが必要と主張するところです。 –
@IraBaxter絶対に。私はちょうど少数の並列性がうまくいくことを指摘したいと思っていました。 –