C++ 实现线程类和线程池类

xiaoyin35 2021-01-29 06:46:50
蒻菊来向大佬们请教啦,我用的是Dev C++ 5.1!其实就是实现一个简单的效果(模拟了Python中的线程类):

#include <iostream>
#include <algorithm>
//线程类和线程池类,放在C盘了
#include <C:/Thread.h>
#include <C:/ThreadPool.h>
// 或者合在一起:#include<C:/Threads.h>
using namespace std;

int inplus()
{
int a, b;
cout << "输入a, b:";
cin >> a >> b;
int c = a + b;
cout << "答案:" << c << endl;
return c;
}

void sortlist(int len)
{
int *list = new int[len];
for (int i = 0; i < len; i++) cin >> list[i];
sort(list, list + len + 1);
cout << "排序结果:";
for (int i = 0; i < len; i++) cout << list[i] << ' ';
cout << endl;
}

int main()
{
Thread t1(inplus), t2(sortlist, 5); //定义(未就绪)
t1.start(); //启动(开始就绪,等待运行)
t2.start();
t1.wait(); //等待运行结束
t2.wait();
//...其他效果后面说
return 0;
}

后面效果我来评论下来。
...全文
632 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyin35 2021-03-05
  • 打赏
  • 举报
回复
好像<thread>运行没用
xiaoyin35 2021-02-16
  • 打赏
  • 举报
回复
我编辑器好像运行不了C++11标准库<thread>但是编译成功了
  • 打赏
  • 举报
回复
https://goldenhawking.blog.csdn.net/article/details/51824243
xiaoyin35 2021-02-06
  • 打赏
  • 举报
回复
我着急。。。
熊猫呀 2021-02-05
  • 打赏
  • 举报
回复
引用 13 楼 NorZ 的回复:
你就看这帖子下面,何必去百度,那么多现成的...
不懂可以问,直接要代码。。。。
NorZ 2021-02-05
  • 打赏
  • 举报
回复
你就看这帖子下面,何必去百度,那么多现成的...
xiaoyin35 2021-02-04
  • 打赏
  • 举报
回复
引用 11 楼 github_37127447 的回复:
[quote=引用 10 楼 xiaoyin35 的回复:][quote=引用 9 楼 github_37127447 的回复:]ThreadPool tp1; //创建线程池 ThreadPool tp2(5); //创建线程池并创建5个线程 tp1.CreateThread(n); //新添n个线程在线程(默认参数=1) 就是 _beginthreadx() 生成线程。然后 保存 Handle 值,然后 建立队列。 当你想指定任务时,就把 任务的函数 函数指针 以及 参数 作为结构体信息传到队列。然后 线程池中的线程就从任务队列中取 结构体,然后 执行 这些函数。
蒻菊不懂(@_@;),给点代码被?[/quote] 你百度下线程池实现 不就完了[/quote] 难道你叫“百度”?
熊猫呀 2021-02-04
  • 打赏
  • 举报
回复
引用 10 楼 xiaoyin35 的回复:
[quote=引用 9 楼 github_37127447 的回复:]ThreadPool tp1; //创建线程池 ThreadPool tp2(5); //创建线程池并创建5个线程 tp1.CreateThread(n); //新添n个线程在线程(默认参数=1) 就是 _beginthreadx() 生成线程。然后 保存 Handle 值,然后 建立队列。 当你想指定任务时,就把 任务的函数 函数指针 以及 参数 作为结构体信息传到队列。然后 线程池中的线程就从任务队列中取 结构体,然后 执行 这些函数。
蒻菊不懂(@_@;),给点代码被?[/quote] 你百度下线程池实现 不就完了
xiaoyin35 2021-02-04
  • 打赏
  • 举报
回复
引用 9 楼 github_37127447 的回复:
ThreadPool tp1; //创建线程池 ThreadPool tp2(5); //创建线程池并创建5个线程 tp1.CreateThread(n); //新添n个线程在线程(默认参数=1) 就是 _beginthreadx() 生成线程。然后 保存 Handle 值,然后 建立队列。 当你想指定任务时,就把 任务的函数 函数指针 以及 参数 作为结构体信息传到队列。然后 线程池中的线程就从任务队列中取 结构体,然后 执行 这些函数。
蒻菊不懂(@_@;),给点代码被?
熊猫呀 2021-01-31
  • 打赏
  • 举报
回复
#include <C:/Thread.h> #include <C:/ThreadPool.h> 你不是实现了 这两个了吗?
熊猫呀 2021-01-31
  • 打赏
  • 举报
回复
ThreadPool tp1; //创建线程池 ThreadPool tp2(5); //创建线程池并创建5个线程 tp1.CreateThread(n); //新添n个线程在线程(默认参数=1) 就是 _beginthreadx() 生成线程。然后 保存 Handle 值,然后 建立队列。 当你想指定任务时,就把 任务的函数 函数指针 以及 参数 作为结构体信息传到队列。然后 线程池中的线程就从任务队列中取 结构体,然后 执行 这些函数。
xiaoyin35 2021-01-31
  • 打赏
  • 举报
回复
引用 7 楼 github_37127447 的回复:
#include <C:/Thread.h> #include <C:/ThreadPool.h> 你不是实现了 这两个了吗?
这是我没完成的,假想出来的,求大佬帮帮
xiaoyin35 2021-01-30
  • 打赏
  • 举报
回复
引用 4 楼 github_37127447 的回复:
你这有什么问题嘛?
我不会做吗
熊猫呀 2021-01-30
  • 打赏
  • 举报
回复
你这有什么问题嘛?
xiaoyin35 2021-01-29
  • 打赏
  • 举报
回复
我是Windows10!!!
xiaoyin35 2021-01-29
  • 打赏
  • 举报
回复
然后是ThreadPool类的: ThreadPool tp1; //创建线程池 ThreadPool tp2(5); //创建线程池并创建5个线程 tp1.CreateThread(n); //新添n个线程在线程(默认参数=1) 还有:
xiaoyin35 2021-01-29
  • 打赏
  • 举报
回复
先说Thread类的效果: 1.定义(未就绪) Thread name(function, args...); 就是定义一个名字叫name的Thread对象,function是任意返回值有任意参数的一个函数,args是可选/多个参数,用来写function函数的参数。(例如Thread t1(sortlist, 一个数);) 2.启动(就绪) name.start(); 让name对象启动 3.等待结束 name.wait(); 程序可以继续运行但是当name对象所有任务完成时会提醒主程序,具体咋提醒看用户 4.其他 线程基本操作:sleep(),... 5.立即结束 比如有一个是while(1)一直循环,可以用 name.end() 直接结束,比如按键监控。

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧