プロセス間通信/スレッド間通信
スレッド間通信やプロセス間通信で、名前付きpipe通信や共有メモリおよびメッセージキューを使用した双方向確認できる通信方法を選択し、スレッドセーフなプログラミングがなされるのが常とう手段とされてきております。下記の書籍が参考にされてきております。
Win32/C++ マルチスレッドプログラミング詳説 単行本 – 1999/3/1 アーロン コーエン (著), マイク ウッドリング (著), Aaron Cohen (原名), & 3 その他
上記の書籍の独自ライブラリーを参考にもしてきておられるかと存じます。
並行コンピューティング技法 ―実践マルチコア/マルチスレッドプログラミング 大型本 – 2009/12/21 Clay Breshears (著), 千住 治郎 (翻訳)
メールスロット(mailslot)
A:もっと簡単にできないのか?
B:メールスロット(mailslot)というAPI関数を使えば簡単にできます。
そう思い込み、使うとどうなるのか?
一方通行の通信で、送りっぱなし、受け取ったかどうかがわからない。すっぽかしが発生します。
「いってらっしゃい。」 Have a nice day.
と送り出しても
「いってきます。」See you later.
の返事がなくてもわからないという状態となります。
24時間運転のシステムであれば、致命的な欠陥となることがあります。
メールスロットを使わず、他の手法でスレッド間通信やプロセス間通信が行われるのが通常です。ファイルを使って、ハンドシェイクできる方法を取られることもあります。
いろんなサイトや参考書籍でも例示されているのが、mailslot通信です。これは、送信しても相手に伝わったのかが確かめることができません。定周期でメッセージを送り、最新の状態を表示する場合にすっぽかしがあっても次回のメッセージが表示できればよい、というレアなケースならば、許されるような手法です。それ以外では、使用はさけるべき方法です。
頑固・偏屈者
頑固者となると「メールスロットのどこが悪い。使い方が悪いだけだろう!」といって、周囲からの助言・忠告を無視します。その都度、それなりの対応をするため、何度、トラブっても懲りもしません。毎回、同じトラブルを起こすものですから学習能力はゼロです。そういう頑固者は、疎まれ相手にされなくなります。企業・事業所であれば、相手にされてずに自然淘汰されます。(事業所閉鎖に追い込まれます。誰も仕事を発注しなくなります。)
いまの5大陸が大陸プレート移動とそれにともなうプロセスで形成されたという考え(プレートテクトニクス理論)が主流ですが、隆起や陥没でできたんだという説を唱える頑固な学者もいるということを聞いたことがあります。
それと同じような考え違い、マルチスレッドプログラミングを理解していない横着者(あほたわけ)と扱われてしまいます。
メールスロット通信方法は、送りっぱなしなので、通信量が多くなればすっぽかしが発生するのでおすすめはしません。
.Netframework
C++やC#等の開発言語のバージョンも上がってきておりますが、.netframeworkのバージョンも
4.xから5、6、いまは7が最新となってきております。
6以降ではかなり、違うようです。Visual Studioも6.0以前のようなレガシーのもので作成されたアプリを最新のバージョンにリプレイスする際は、Visual Studio2005にアップグレードしてから最新版へのアップグレードすることになるはずです。(VB6.0からVB2017版へのアップグレードをした経験より)
ここ数年で、かなり更新されてきているので、最新の情報を入手し、従来のやり方も見直す必要もあろうかと思いますので、確認されることが望まれます。