none
CThreadPool类如何获得当前等待队列的数量 RRS feed

  • 问题

  • 在使用ATL线程池类CThreadPool的过程中,没有找到如何获得当前等待队列的方法。

    我现在要做的是,无限制的向线程池中添加任务,而任务的完成速度相对任务的添加速度慢很多。所以,我想根据当前线程池里的等待队列数量来决定是继续添加任务或是等待一段时间。查看源代码发现CThreadPool类中的线程池是用的完成端口。在《Windows高级编程指南》中有对完成端口比较详细的介绍,但是也没有发现关于线程池的操作方法。

    再满足要求的情况下,如果有更好的实现线程池方法也可以。

    请各位赐教,谢谢!

    星茫
    2009年3月27日 8:41

答案

  • 读完成端口,返回ERROR_IO_PENDING的是没有完成的。
    MSMVP VC++
    • 已标记为答案 星茫 2009年4月3日 9:18
    2009年3月27日 19:59
    版主
  • 通过该函数GetQueuedCompletionStatus获得完成状态。
    欢迎光临我的个人网站:http://www.joyvc.cn,本网站提供[IM即时通信|棋牌游戏|网游开发|UI编程|网络通讯|组件开发|图像多媒体|数据库]方面的VC/C++/C技术文章、源代码和教程资料
    • 已标记为答案 星茫 2009年4月3日 9:18
    2009年4月2日 6:06
    版主

全部回复

  • 读完成端口,返回ERROR_IO_PENDING的是没有完成的。
    MSMVP VC++
    • 已标记为答案 星茫 2009年4月3日 9:18
    2009年3月27日 19:59
    版主
  • 读完成端口,返回ERROR_IO_PENDING的是没有完成的。
    MSMVP VC++
    能再说的详细些吗。
    如何读完成端口,用ReadFile吗?

    星茫
    2009年3月31日 1:28
  • 通过该函数GetQueuedCompletionStatus获得完成状态。
    欢迎光临我的个人网站:http://www.joyvc.cn,本网站提供[IM即时通信|棋牌游戏|网游开发|UI编程|网络通讯|组件开发|图像多媒体|数据库]方面的VC/C++/C技术文章、源代码和教程资料
    • 已标记为答案 星茫 2009年4月3日 9:18
    2009年4月2日 6:06
    版主