2

いくつかのデータソースのセット、つまり、いくつかの熱センサー、またはビデオカメラを想像してみましょう。スレーブのこれらのソースからデータを収集し、マスターに渡したいです。

効率は操作の重要な側面です。

複数のプロセスまたはスレッド/タスクを使用する必要がありますか?

編集:言及するのを忘れました... CPUとメモリの使用量、および使用可能なコアの数に関係なく、すべてのデータソースを同じ優先度で同時に同期的に提供する必要があります。

4

2 に答える 2

1

複数のスレーブからマスターに渡す場合は、スレッドを使用します。これにより、アドレススペースを共有し、タスクの実装が容易になる可能性があります。非常に多くのスレーブがあり、最大限の効率が必要な場合は、スレッドプールを使用してスレーブソースにサービスを提供します。

複数のプロセスを使用すると、プロセスコンテキストスイッチのオーバーヘッドが追加されるだけです。これは、一般に、スレッドコンテキストスイッチのオーバーヘッドよりもわずかに多くなります。また、プロセス間通信を管理する必要があります。これは、一般に、スレッド間通信よりも複雑で効率が低くなります。

于 2012-05-01T18:42:01.760 に答える
1

これを行う典型的な方法は、リーダー ライター ロック ( .NET ではReaderWriterLockSlim ) を使用することです。ライターは共有状態マップへの書き込みアクセスを一度に 1 つずつキューに入れますが、リーダー (クライアント アプリケーションなど) は同時に一緒に読み取ることができますが、状態がプロデューサーによって書き込まれている間は明らかにそうではありません。 .

編集:それは明らかにスレッドを使用しています。プロセス間通信は、まともなパフォーマンスの希望を台無しにしてしまいます。

于 2012-05-01T18:56:48.267 に答える