CreateMutex在两个不同的程序中,相同的句柄(gcc)

时间:2011-09-19 07:07:00

标签: windows winapi mutex

我写过两个通过tcp进行通信的程序。这两个程序原则上是相同的。 在通过tcp发送消息之前,消息存储在内部缓冲区中。我使用互斥锁来保护此缓冲区以便同时进行读/写。 为了进行测试,我确实在同一台PC上运行了这两个程序并遇到了一些时间问题。我发现CreateMutex总是在两个程序上都返回相同的句柄,因此一个程序阻止了另一个程序!

hBufferMutex = CreateMutex(NULL,FALSE,"BufferMutex");

我用于互斥锁的名称无关紧要,两个程序的名称始终相同。我做错了什么?

1 个答案:

答案 0 :(得分:4)

如果您只是在程序中使用互斥锁,请使用匿名的一组名称为NULL。名称实际上仅在您希望在两个程序之间进行通信时使用(...在同一个登录会话上运行,这是默认设置,或者如果您使用'global \'前缀,则在同一台机器上运行。)

在您的情况下,您可以使用Critical Section而不是互斥锁 - 它基本上是一个更轻量级的版本,只能在一个进程中使用。