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
分类:
C++
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具
· Vue3封装支持Base64导出的电子签名组件