kevin55

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  101 随笔 :: 0 文章 :: 25 评论 :: 24万 阅读
复制代码
 1 class CThreadPool 
 2 { 
 3 public: 
 4  
 5     template <typename T> 
 6     static void QueueUserWorkItem(void (T::*function)(void),  
 7         T *object, ULONG flags = WT_EXECUTELONGFUNCTION) 
 8     { 
 9         typedef std::pair<void (T::*)(), T *> CallbackType; 
10         std::auto_ptr<CallbackType> p(new CallbackType(function, object)); 
11  
12         if (::QueueUserWorkItem(ThreadProc<T>, p.get(), flags)) 
13         { 
14             // The ThreadProc now has the responsibility of deleting the pair. 
15             p.release(); 
16         } 
17         else 
18         { 
19             throw GetLastError(); 
20         } 
21     } 
22  
23 private: 
24  
25     template <typename T> 
26     static DWORD WINAPI ThreadProc(PVOID context) 
27     { 
28         typedef std::pair<void (T::*)(), T *> CallbackType; 
29  
30         std::auto_ptr<CallbackType> p(static_cast<CallbackType *>(context)); 
31  
32         (p->second->*p->first)(); 
33         return 0; 
34     } 
35 };
复制代码

 https://code.msdn.microsoft.com/vstudio/CppWindowsService-cacf4948/sourcecode?fileId=21604&pathId=1789278805

posted on   kernel_main  阅读(762)  评论(0编辑  收藏  举报
编辑推荐:
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
阅读排行:
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具
· Vue3封装支持Base64导出的电子签名组件
点击右上角即可分享
微信分享提示