资源简介
用c++ 实现的线程池工程,可直接使用,其中线程数目可根据空闲情况自增减,并且实现线程跟任务无关联。
代码片段和文件信息
#include
#include
#include “threadpoolmanager.h“
#include
#include
#include
#include
using namespace std;
int seq = 0;
int billNum =0;
int inter = 1;
pthread_mutex_t m_mutex;
void myFunc(void*arg)
{
pthread_mutex_lock(&m_mutex);
seq++;
if(seq%inter == 0 )
{
cout << “fun 1=“ << seq << endl;
}
if(seq>=1000000000)
{
cout << “billion“ << endl;
seq = 0;
billNum++;
}
pthread_mutex_unlock(&m_mutex);
//sleep();
}
int main(int argc char** argv)
{
if(argc != 6)
{
cout << “必须有5个参数 任务执行次数 任务池大小 线程池大小 预创建线程数 输出间隔“ << endl;
cout << “eg: ./test 999999 10000 100 10 20“ << endl;
cout << “上例代表创建一个间隔20个任务输出,任务池大小为10000,线程池大小为100,预创建10个线程,执行任务次数为:999999“ << endl;
return 0;
}
double loopSize = atof(argv[1]);
int taskSize = atoi(argv[2]);
int threadPoolSize = atoi(argv[3]);
int preSize = atoi(argv[4]);
inter = atoi(argv[5]);
pthread_mutex_init(&m_mutexNULL);
ThreadPoolManager manager;
if(0>manager.Init(taskSize threadPoolSize preSize))
{
cout << “初始化失败“ << endl;
return 0;
}
cout << “*******************初始化完成*********************“ << endl;
struct timeval time_beg time_end;
memset(&time_beg 0 sizeof(struct timeval));
memset(&time_end 0 sizeof(struct timeval));
gettimeofday(&time_beg NULL);
double i=0;
for(; i {
while(0>manager.Run(myFuncNULL))
{
usleep(100);
}
}
gettimeofday(&time_end NULL);
long total = (time_end.tv_sec - time_beg.tv_sec)*1000000 + (time_end.tv_usec - time_beg.tv_usec);
cout << “total time =“ << total << endl;
cout << “total num =“ << i << “ billion num=“ << billNum<< endl;
cout << __FILE__ << “将关闭所有线程“ << endl;
//pthread_mutex_destroy(&m_mutex);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
....... 440 2018-12-20 14:48 threadpool\commondef.h
....... 2143 2018-12-20 14:51 threadpool\main.cpp
....... 468 2018-12-20 16:26 threadpool\Makefile
....... 4670 2018-12-20 14:48 threadpool\taskpool.cpp
....... 2569 2018-12-20 14:49 threadpool\taskpool.h
....... 7999 2018-12-20 14:53 threadpool\threadpool.cpp
....... 3085 2018-12-20 14:50 threadpool\threadpool.h
....... 4111 2018-12-20 14:50 threadpool\threadpoolmanager.cpp
....... 3528 2018-12-20 14:51 threadpool\threadpoolmanager.h
目录 0 2018-12-20 16:59 threadpool
----------- --------- ---------- ----- ----
29013 10
相关资源
- 一定经纬范围的墨卡托投影.cpp
- 用C++实现的华容道游戏
- C++复习资料精华
- C++,链表,通讯录系统
- 算术编码c++170579
- 自适应哈夫曼编码C++
- C++从入门到精通第三版 清华大学出版
- 五子棋C++代码
- C++课设 简单的投票系统
- 计算机图形学VSC++生成时钟报告含代码
- 基于c++小型公司工资管理系统的设计
- 节约里程法c++实现
- C++学习路线视频全套
- Visual C++ 网络 流量 监控 系统
- C++ 矩阵类 实现常用的矩阵操作
- 计算机图形学直线段的扫描转换C++实
- 50道习题源程序.zip
- RTCM 3.0解码C++代码
- 批量16位图像转8位
- C++数值排序
- C++大作业———医院病人看病情景代
- OpenKE在windows环境下运行的C++动态链接
- 基于Qt5.9Creator的一个简单socket通信C
- 求两点之间所有路径的C++代码
- C++ 跨平台 异步消息队列
- VC++对话框CDialog的全屏显示及控件居中
- VC++中对Access数据库操作
- VC++ OpenGL三维物体建模--雨伞的绘制(
- 马尔科夫链的C++代码实现
- C++课程设计 电煤气管理系统
评论
共有 条评论