setThreadpoolCallbackLibrary 函数 (winbase.h)

确保只要有未完成的回调,指定的 DLL 就保持加载状态。

语法

void SetThreadpoolCallbackLibrary(
  [in, out] PTP_CALLBACK_ENVIRON pcbe,
  [in]      PVOID                mod
);

参数

[in, out] pcbe

定义回调环境的 TP_CALLBACK_ENVIRON 结构。 InitializeThreadpoolEnvironment 函数返回此结构。

[in] mod

DLL 的句柄。

返回值

备注

如果回调可能获取加载程序锁,则应调用此函数。 这可以防止在 DllMain 中的一个线程等待回调结束,而另一个正在执行回调的线程尝试获取加载程序锁时发生死锁。

如果可能卸载包含回调的 DLL,DllMain 中的清理代码必须在释放对象之前取消未完成的回调。

使用指定回调库的TP_CALLBACK_ENVIRON管理创建的回调会占用一些处理量。 应考虑其他选项,以确保在执行回调时不会卸载库,或确保可能正在执行的回调不会获取加载程序锁。

线程池假定拥有提供给此函数的库引用的所有权。 将模块句柄传递给此函数后,调用方不应在模块句柄上调用 FreeLibrary

此函数作为内联函数实现。

若要编译使用此函数的应用程序,请将_WIN32_WINNT定义为 0x0600 或更高版本。

要求

   
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)

另请参阅

DestroyThreadpoolEnvironment

FreeLibraryWhenCallbackReturns

InitializeThreadpoolEnvironment

SetThreadpoolCallbackCleanupGroup

SetThreadpoolCallbackPool

SetThreadpoolCallbackPriority

SetThreadpoolCallbackRunsLong

线程池