可能性の重複:で、複数のクライアントアプリケーションにロードされているMS VS C++急行、中にDLLファイルを足す
DLL thread safetyDLLミューテックス - 例
こんにちは
イム同時に、ロードされたDLLの他のインスタンスと共有メモリを使用します。私たちは、DLLは、次のようになりますと仮定しましょう:2つの以上のクライアントから同時に呼び出された
#include stdafx.h
#pragma data_seg (".TEST")
//Shared variables
#pragma data_seg()
#pragma comment(linker, "/section:.TEST,RWS")
_DLLAPI void __stdcall doCalc()
{
//Do critical stuff
}
doCalc
場合、システムがクラッシュします。 関数がすでに呼び出されている場合、他の呼び出しを「停止」するミューテックスを作成するにはどうすればよいですか? インターネットでまともなものを探すために過去2時間を費やしたので、例を挙げてください)
ありがとうございます。
1)他のプロセス(他のユーザーのコンテキストで実行中)が同じmutexを取得し、2)他のプロセスもmutexにアクセスできることを確認する必要があります。これを行うには、1)ミューテックス名に "Global \"接頭辞を使用し、2)ミューテックスを作成するときに適切なセキュリティ記述子を指定します。 – villintehaspam
@villintehaspam、あなたのアサーションは有効ですが、OPのケースではそれらが適用されるのではないかと疑います。 – Dialecticus
あなたはおそらく正しいでしょう - 私はこの情報が存在していなければならないと考えています。 – villintehaspam