私はしばらく前に Win32 コードで IPC を使用しました - クリティカル セクション、イベント、およびセマフォ。
.NET 環境でのシーンはどうですか? 使用可能なすべてのオプションと、いつ使用するか、およびその理由を説明するチュートリアルはありますか?
Microsoft の最新の IPC はWindows Communication Foundationです。実際には、下位レベル (tcp、upd、名前付きパイプなど) には何も新しいものはありませんが、WCF は IPC 開発を大幅に簡素化します。
役立つリソース:
もちろん、WCF 上の MSDN
明白な (WCF) とは別に、かなり優れた C#/CLR 用の ZeroMQ バインディングがあります。
http://www.zeromq.org/bindings:clr
WCF よりもはるかに少ないコードと構成で、メッセージ指向の IPC、pub/sub、およびその他のさまざまな戦略を実行します。
また、他の何よりも少なくとも 1 桁高速であり、低遅延の通信が必要な場合は遅延が少なくなります。
セマフォ、ロック、ミューテックスなどに関して。共有による通信ではなく、通信による共有を行うと、従来のパラダイムよりも手間がかかりません。
名前付きパイプまたはUnixソケットを使用する傾向があります(MS.NETまたはMonoのどちらをターゲットにしているかによって異なります。抽象化するクラスがあります)。使いやすく、移植性があり、管理されていないコードと簡単に相互運用できるためです。 。とは言うものの、マネージコードのみを扱っている場合は、WCFまたはリモーティングを使用します。Monoサポートが必要な場合は後者を使用します。WCFサポートはまだ存在しないためです。
ネットワークを介した通信ではなく、マシンドメインで使用する必要がある場合は、メモリマップファイルを使用することをお勧めします。次のリンクを参照してください。
http://techmikael.blogspot.com/2010/02/blazing-fast-ipc-in-net-4-wcf-vs.html
.NET Remoting もありますが、これは非常に優れていると思いますが、WCF があるため、現在は廃止されていると思います。