代码之家  ›  专栏  ›  技术社区  ›  pauldoo

如何在.NET中创建可继承的信号量?

  •  3
  • pauldoo  · 技术社区  · 15 年前

    可继承的 . 这意味着我启动的任何子进程都可以自动对同一Win32对象执行操作。

    Semaphore semaphore = new Semaphore(0, 10);
    Process process = Process.Start(pathToExecutable, arguments);
    

    但是子进程不能使用此代码中的信号量对象。


    SECURITY_ATTRIBUTES security = {0};
    security.nLength = sizeof(security);
    security.bInheritHandle = TRUE;
    HANDLE semaphore = CreateSemaphore(&security, 0, LONG_MAX, NULL);
    

    后来什么时候 CreateProcess 被称为 bInheritHandles 参数设置为 TRUE .

    ReleaseSemaphore .)


    SemaphoreSecurity ProcessStartInfo

    2 回复  |  直到 15 年前
        1
  •  1
  •   Reed Copsey    15 年前

    一种选择是只需包装创建信号量的C++代码并启动子进程,并通过P/JooKE调用它(或者使用C++ +CLI)。

        2
  •  0
  •   Sheng Jiang 蒋晟    15 年前