Windows:当线程进入/退出“等待”状态时如何通知?

时间:2014-12-18 17:02:35

标签: windows multithreading winapi callback synchronization

我正在尝试实现更智能的线程池。为了容纳遗留代码,如果我可以在池状线程从等待状态(阻塞的IO,睡眠,同步,关键部分等)和运行状态切换时得到通知,那将是很好的。

我正在寻找Windows中的OS API,它为我提供了以下选项之一:

  • 注册一个回调,该回调将在池状线程的上下文中由于阻塞调用而进入“等待”状态之前调用,并且在它从此等待恢复之后立即注册; OR
  • 为每个池化线程注册一个同步对象,每当阻塞调用开始或结束时都会发出信号。

但是我无法更改阻止调用。应用程序充满了套接字读写,文件读写,WaitForSingleObject调用等。我无法通过调用管理代码来包围此代码。我也不想捕获API调用,因为它涉及大量的API,并且需要我解释参数并检测哪些调用是阻塞的,哪些不是。

我看了Windows Thread Pool API,但它似乎没有提供这样的功能。有一个名为BindIoCompletionCallback的API,但它没有提供所需的功能。

我可能缺少任何API吗?

0 个答案:

没有答案