たとえば、ビデオ編集アプリケーションなど、単一のマシンで実行するように設計された通常のデスクトップ アプリケーションがあるとします。このようなアプリケーションは、ビデオ レンダリングなど、計算負荷の高いバックグラウンド スレッドを生成することがよくあります。
これらの重い計算スレッドをより強力なマシンに「オフロード」し、ユーザーにとってシームレスな方法でそれを実行することが技術的に可能かどうか疑問に思っていました。ユーザーのマシンでは UI スレッドのみが実行され、残りの重い処理はより強力なリモート マシンで処理されます。スレッドが計算を実行するために必要なデータ (この例ではビデオ ファイル) がリモート マシンのディスク上にあると仮定します。
全く異なるプロセッサ上の2つのスレッドを、同じマシン上で動作しているかのように相互に通信させるのは簡単ではないことは理解していますが、根本的な制限ここに、このユースケースに対する既知の解決策があるかどうかを示します。
答え1
単一のマシンで実行するように設計された「通常の」デスクトップ アプリケーションでは、この方法でスレッドを分割することはできません。
これを実行するには、リモート デスクトップ アプリケーションなど、プログラムされたコンピュータ間インターフェイスを備えた特別に構築されたアプリケーションが必要になります。
一般的に、2 台のコンピュータ間に専用の高速接続がない場合、接続に伴う遅延により、画面が動的すぎるビデオ アプリケーションに適さなくなります。
答え2
これはタスクに大きく依存し、シームレスをどのように定義するかによっても異なります。
特定の種類の負荷では、これはすでに行われています。実際、定義したビデオ編集タスクは、場合によってはまさにこれを実行できます。この用語は「レンダリング ファーム」です。
より一般的に言えば、多くの種類の「クラウド コンピューティング」がこの問題を解決します。
(この回答の問題は、シームレスをどのように定義するかです。確かに、この種の操作を監視およびシームレスにできるアーキテクチャ (主にソフトウェア アーキテクチャ) は存在しますが、適度に複雑でタスクに依存するセットアップが必要です。また、すべてのタスクがこのモデルに適しているわけではありません。特に、帯域幅が問題になる可能性がある場合や、タスクを並列化できない場合はそうです。)