CThreadPool

 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值