当前位置: 首页 > news >正文

wordpress及时聊天网站优化公司开始上班了

wordpress及时聊天,网站优化公司开始上班了,建设网站实训心得体会,5G网站建设下载源代码 一个模板线程池,没有使用信号灯,互斥体等同步对象。 主要思路是初始化一个管理线程,管理线程通过消息协调任务链表和工作线程之间如何更好的工作,消息通信使用PostThreadMessage。 下面是模板线程池源代码 expand sou…

下载源代码

一个模板线程池,没有使用信号灯,互斥体等同步对象。

主要思路是初始化一个管理线程,管理线程通过消息协调任务链表和工作线程之间如何更好的工作,消息通信使用PostThreadMessage。

下面是模板线程池源代码

下面介绍如何使用这个模板线程池

1.任务类和模板实例化线程池类的定义及其实现

view plain
  1. /*====================================================================== 
  2. Copyright (c) 2010,zyq5945@126.com  
  3. All rights reserved.  
  4. 文件名称:MyThreadPool.h  
  5. 摘    要:任务类和模板实例化线程池类的定义 
  6. 当前版本:1.00  
  7. 作    者:zyq5945@126.com(注意把中文字符换成英文字符)  
  8. 完成日期:2010年6月26日  
  9. 发布Blog:http://blog.csdn.net/zyq5945/   
  10. ======================================================================*/  
  11. #pragma once  
  12. #include "MsgThreadPool.h"  
  13. /*====================================================================== 
  14. 类名称:    CTask 
  15. 类说明:    自定义的测试任务类 
  16.             如果类中有指针或者其他的类的话(深拷贝和浅拷贝), 
  17.             没有把握最好是不要用编译器提供的默认拷贝构造函数和等号操作符 
  18. ======================================================================*/  
  19. class CTask  
  20. {  
  21. public:  
  22.     CTask();  
  23.     CTask(const CTask& rTask);  
  24.     CTask& operator =(const CTask& rTask);  
  25. public:  
  26.     int m_nIndex;  
  27.     SYSTEMTIME m_cTime;  
  28. };  
  29. /*====================================================================== 
  30. 类名称:    class CMyThreadPool : public CMsgThreadPool<CTask> 
  31. 类说明:    具体是线程池类 
  32.             需要在这个类的虚函数DoWork中实现要做的具体工作 
  33.             也可以如此继承 
  34.             typedef CMsgThreadPool<CTask> CCTaskThreadPool; 
  35.             class CMyThreadPool : public CCTaskThreadPool 
  36. ======================================================================*/  
  37. class CMyThreadPool : public CMsgThreadPool<CTask>  
  38. {  
  39. public:  
  40.     CMyThreadPool(void);  
  41.     ~CMyThreadPool(void);  
  42. protected:  
  43.     virtual void DoWork(CTask& rTask);  
  44. };  

 

实现代码很简单,下面是线程池任务处理过程

view plain
  1. /*====================================================================== 
  2. 函数名称:   void CMyThreadPool::DoWork(CTask& rTask) 
  3. 函数参数:   T& t     
  4.                 一个需要处理的任务的引用 
  5. 返回值:    无 
  6. 函数说明:   具体的任务处理过程 
  7.             注:请勿保存传递过来的参数指针 
  8. ======================================================================*/  
  9. void CMyThreadPool::DoWork(CTask& rTask)  
  10. {  
  11.     CString strMsg;  
  12.     SYSTEMTIME st;  
  13.     st = rTask.m_cTime;  
  14.       
  15.     strMsg.Format(_T("/tIndex:%08d/t%02d:%02d:%02d.%03d/t/tTID:%08x/n"),  
  16.         rTask.m_nIndex, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, GetCurrentThreadId());  
  17.     // 在调试窗口输出处理的任务  
  18.     OutputDebugString(strMsg);  
  19.     // 模拟线程处理消耗时间  
  20.     DWORD dwSleep = st.wMilliseconds > 500? st.wMilliseconds : 500;  
  21.     Sleep(dwSleep);  
  22. }  

 

2. 在对话框中实例化这个线程池类,并使用

a.添加头文件,本例中是

view plain
  1. #include "MyThreadPool.h"  

b.实例化这个线程池类,本例中是添加到类成员变量中

view plain
  1. CMyThreadPool m_pool;               // 线程池对象  

c.初始化线程池对象

view plain
  1. // 初始化线程池对象  
  2. VERIFY(m_pool.Init());  

注:默认是初始化10个工作线程,你也可以在有空闲线程的时候调用SetThreadNum设置工作线程个数.

d.添加任务到线程池对象中

view plain
  1. // 测试加入任务     
  2. SYSTEMTIME st;  
  3. for (int i=0; i<100; i++)  
  4. {     
  5.     CTask cTask;      
  6.     GetLocalTime(&st);    
  7.     st.wMilliseconds = st.wMilliseconds <500?   
  8.         st.wMilliseconds+i : st.wMilliseconds -i;  
  9.     static int s_nIndex = 0;  
  10.     cTask.m_nIndex = s_nIndex++;  
  11.     cTask.m_cTime = st;  
  12.         // 添加任务到线程池对象中  
  13.     m_pool.AddTask(cTask);  
  14. }  

 

在VC6.0中可能会有内存泄露(大小:工作线程个数*sizeof(任务类)),在VS2008SP1中测试没有内存泄露.

需要在各个VS版本测试,请修改模板线程池的析构函数的_MSC_VER宏为对应的VS版本即可.

转自 http://blog.csdn.net/zyq5945/article/details/5697455

http://www.lbrq.cn/news/2783683.html

相关文章:

  • 企业邮箱个人注册河北seo基础知识
  • 网站建设公司河南郑州如何做好网站的推广工作
  • 哪个网站可查询有没有做社保卡关键字c语言
  • 网站建设分金手指排名十四百度刷seo关键词排名
  • 石家庄大型网站建站关键词智能优化排名
  • 网站建设包括什么科目石家庄手机端seo
  • 现在网站建设用到哪些技术短视频新媒体推广
  • vps做vpn svn和网站抖音关键词搜索指数
  • wap手机网站建站济南网站制作公司
  • 初一下电脑课书做网站优化落实疫情防控
  • 网站模板怎么替换公众号seo排名软件
  • 网站怎么做扫码微信支付网站建站价格
  • 网站建设怎样设置动态背景怎样才能被百度秒收录
  • 陕西政府门户网站建设 招标信息长沙seo网站优化公司
  • 网站建设属于会计的什么科目网站推广的具体方案
  • 网站建设网络推广文章交换链接营销成功案例
  • 网站打不开dns修改吗武汉网络推广外包公司
  • 做网站不会配色怎么办如何在其他平台做推广
  • 政府门户网站建设方案模板网络营销的现状及问题
  • 抖音网站九易建网站的建站流程
  • 做搜索网站能发财吗专业seo培训学校
  • 常州网站制作it培训学校it培训机构
  • 网站开发使用什么技术百度分析工具
  • 镇江网站建设门户报价公司seo是什么意思
  • 做公司网站哪家好 上海怎么提升关键词的质量度
  • 024 网站推广今天热点新闻事件
  • 山西网站建设公司排名百度老年搜索
  • 中国建设银行个人网站公关服务
  • 保定 网站游戏推广代理app
  • 购物网站建设要多少钱外链代发
  • spring整合JUnit
  • 开源大模型如何选择?GPT-OSS综合评估
  • MacBook Pro M1升级Burp Suite2025.8
  • git 生成 Patch 和打 Patch
  • 力扣hot100:三数之和(排序 + 双指针法)(15)
  • openldap安装 -添加条目