相关疑难解决方法(0)

如何使用互斥锁保护公共资源?

我有一个公共资源,我想要1,只有我的应用程序的一个实例(或它的COM API)可以随时访问.我曾尝试使用互斥锁保护此资源,但是当主机dotnet应用程序的多个线程尝试访问COM对象时,似乎没有释放互斥锁.这是我用来保护资源的代码.

repeat
  Mutex := CreateMutex(nil, True, PChar('Connections'));
until (Mutex <> 0) and (GetLastError <> ERROR_ALREADY_EXISTS);
  try
    //use resource here!
  finally
    CloseHandle(Mutex);
  end;
Run Code Online (Sandbox Code Playgroud)

如果我同时运行线程,第一个线程就会通过(显然是第一个创建互斥锁的线程),但后续线程会在重复循环中被捕获.如果我以5秒的间隔运行每个线程,那么一切正常.

我怀疑我在这里没有正确使用互斥锁,但我发现很少有关于如何执行此操作的文档.

有任何想法吗?

delphi mutex

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

delphi ×1

mutex ×1