C++使用thread类多线程编程
目录
pthread多线程
系统自带CreateThread
std::thread
c++ 多线程总结_jacke121的专栏-CSDN博客
std thread比较好用,但是系统带的socket不能调用recv
pthread多线程
c++ 线程sleep_C语言多线程编程(一)_阿灿姑娘的博客-CSDN博客
系统自带CreateThread
windows C++ 多线程编程(二)等待线程返回_超级大洋葱的博客-CSDN博客_c++等待线程执行完毕再返回
2.参数 bWaitAll 为 true,等待所有线程返回。
#include <stdio.h>
#include <windows.h>const unsigned int THREAD_NUM = 10;
DWORD WINAPI ThreadFunc(LPVOID);int main()
{printf("我是主线程, pid = %d\n", GetCurrentThreadId()); //输出主线程pidHANDLE hThread[THREAD_NUM];for (int i = 0; i < THREAD_NUM; i++){hThread[i] = CreateThread(NULL, 0, ThreadFunc, &i, 0, NULL); // 创建线程}WaitForMultipleObjects(THREAD_NUM,hThread,true, INFINITE); //一直等待,直到所有子线程全部返回return 0;
}DWORD WINAPI ThreadFunc(LPVOID p)
{int n = *(int*)p;Sleep(1000*n); //第 n 个线程睡眠 n 秒printf("我是, pid = %d 的子线程\t", GetCurrentThreadId()); //输出子线程pidprintf(" pid = %d 的子线程退出\n\n", GetCurrentThreadId()); //延时10s后输出return 0;
}
windows.h会引起错误:
std::thread比较好用:
c++ 多线程总结_jacke121的专栏-CSDN博客
图片测试;
1个图片10ms,8个线程 26ms。
图片特别大时,5000*3000,处理时间记录:
线程数量 | 总耗时ms |
1 | 75 |
2 | 122 |
4 | 226 |
6 | 288 |
DWORD WINAPI ThreadFunc(LPVOID);DWORD WINAPI ThreadFunc(LPVOID p)
{cv::Mat image0= *(cv::Mat*)p;cv::Mat dst = cv::Mat::zeros(image0.size(), CV_32F);image0.convertTo(dst, CV_32F, 1, 0);cv::Mat image_re = dst.reshape(1,1);//int n = *(int*)p;//Sleep(10 * n); //第 n 个线程睡眠 n 秒printf("我是, pid = %d 的子线程\t", GetCurrentThreadId()); //输出子线程pidprintf(" pid = %d 的子线程退出\n\n", GetCurrentThreadId()); //延时10s后输出return 0;
}int main(){printf("我是主线程, pid = %d\n", GetCurrentThreadId()); //输出主线程pidconst unsigned int THREAD_NUM = 8;HANDLE hThread[THREAD_NUM];cv::Mat image2 = cv::imread("../configs/zidane.jpg", cv::IMREAD_UNCHANGED);Timer timer;timer.reset();for (int i = 0; i < THREAD_NUM; i++){hThread[i] = CreateThread(NULL, 0, ThreadFunc, &image2, 0, NULL); // 创建线程}WaitForMultipleObjects(THREAD_NUM, hThread, true, INFINITE); //一直等待,直到所有子线程全部返回timer.out("all");system("pause");return 0;
std::thread
#include <iostream>
#include <thread>
#include <Windows.h> using namespace std; void thread01()
{ for (int i = 0; i < 5; i++) { cout << "Thread 01 is working !" << endl; Sleep(100); }
}
void thread02()
{ for (int i = 0; i < 5; i++) { cout << "Thread 02 is working !" << endl; Sleep(200); }
} int main()
{ thread task01(thread01); thread task02(thread02); task01.join(); task02.join(); for (int i = 0; i < 5; i++) { cout << "Main thread is working !" << endl; Sleep(200); } system("pause");
}
#include <iostream>
#include <thread>void foo(const int &x,char *mychar)
{std::cout << &x << " " << &mychar << std::endl;std::cout << "正在运行的线程为:" << std::this_thread::get_id() << "线程的参数为: " << x <<" "<<mychar<< std::endl;return;
}int main()
{std::cout << "主线程的线程id为: " << std::this_thread::get_id() << std::endl;int x = 1;char mybuff[] = "This is a test";std::cout << &x << " " << &mybuff << std::endl;std::thread second(foo, x, mybuff);second.join();std::cout << "主线程运行结束" << std::endl;return 0;
}
C++使用thread类多线程编程相关推荐
- C++ 11使用thread类多线程编程
转自https://blog.csdn.net/dcrmg/article/details/53912941 C++11中引入了一个用于多线程操作的thread类,简单多线程示例: [cpp] vie ...
- C 多线程编程之在类中使用多线程(thread)的方法
一.thread的基本用法 参见C++使用thread类多线程编程 . 二.类外使用多线程,访问类的成员 这几种方式,新建线程都是在类外,然后通过把友元函数或者成员函数作为thread参数. #inc ...
- Android中的多线程编程与异步处理
Android中的多线程编程与异步处理 引言 在移动应用开发中,用户体验是至关重要的.一个流畅.高效的应用能够吸引用户并提升用户满意度.然而,移动应用面临着处理复杂业务逻辑.响应用户输入.处理网络请求 ...
- Linux环境下,C++实现龟兔赛跑的多线程编程
编程 使⽤ Thread 实现多线程编程 题目:龟兔赛跑,跑道距离50米.乌龟(作为⼀个线程) 每秒3米,不睡觉 : 兔子(作为⼀个线程)每秒5米,每跑15⽶睡2秒钟.请模拟比赛情况. #includ ...
- c#.net多线程编程教学(2):Thread类
这章将向大家介绍.NET中的线程API,怎么样用C#创建线程,启动和停止线程,设置优先级和状态. 在.NET中编写的程序将被自动的分配一个线程.让我们来看看用C#编程语言创建线程并且继续学习线程的知识 ...
- Python多线程编程---(1)threading 模块 Thread 类
全文参考:Python多线程编程(一):threading 模块 Thread 类的用法详解_frank 的专栏-CSDN博客 最近看了下团队自动化测试用例的代码,里面有涉及并行处理的逻辑,主要是基于 ...
- python创建线程函数_Python多线程编程(三):threading.Thread类的重要函数和方法...
这篇文章主要介绍threading模块中的主类Thread的一些主要方法,实例代码如下: 复制代码 代码如下: ''' Created on 2012-9-7 @author: walfred @m ...
- Python多线程编程(一):threading 模块 Thread 类的用法详解
我们进行程序开发的时候,肯定避免不了要处理并发的情况. 一般并发的手段有采用多进程和多线程. 但线程比进程更轻量化,系统开销一般也更低,所以大家更倾向于用多线程的方式处理并发的情况. Python 提 ...
- C++多线程:thread类创建线程的多种方式
文章目录 描述 函数成员简介 总结 描述 头文件 <thread> 声明方式:std::thread <obj> 简介 线程在构造关联的线程对象时立即开始执行,从提供给作为构造 ...
最新文章
- @SkipValidation跳过Struts2validation校验器
- python中国地图热力图是什么意思_python实现输入的数据在地图上生成热力图效果...
- 创业感悟:技术兄弟为什么一直没有起来(1)
- 从零开始学习PYTHON3讲义(二)把Python当做计算器
- 隐私与AI兼得,蚂蚁金服是如何做到的?
- Opencv--cvSetImageROI和cvResetImageROI的使用
- win2003下APACHE2.050+PHP5+MYSQL4.0.20+PHPMYADMIN2.57 的简易安装配置
- 哐!英特尔的无人机砸中你头顶
- NLP之电影评分数据的情感分析
- 工单、工艺路线及工作中心的表结构
- kylin2.1.0 + CHD5.7环境搭建
- php启动后no input file specified.,php网站出现no input file specified 三种解决方法
- 【数据结构】串(一)—— 串的基础知识
- 不要猥琐就是浪,特斯拉这一季度又亏大发了
- C++ search()函数用法详解(深入了解,一文学会)
- MOS管和三极管区别-对比很显然
- 高数考研归纳 - 微分学 - 中值定理
- linux 驱动笔记(四)
- 被问麻了,Spring 如何处理循环依赖?
- 《聆听宇宙的歌唱》——超越故乡
热门文章
- 安装bigsur卡在12分钟_Big Sur为什么安装不了?macOS Big Sur无法完成安装的解决办法!...
- 河南计算机程序大赛,我院成功举办河南省第十一届ACM大学生程序设计竞赛
- oracle根据_分割字符串,oracle分割字符串函数
- 怀旧服湖畔镇服务器位置,《魔兽世界怀旧服》今天再开10组新服 47组服务器免费转服开启...
- 华为旗舰陆续升级鸿蒙系统,华为鸿蒙重磅来袭:今年4月起 华为旗舰手机将陆续升级鸿蒙系统!...
- 我是非计算机专业学生,非计算机专业学生怎么走上计算机技术之路?
- go语言支持继承吗_Go语言的结构体嵌入为什么不算继承?
- php屏幕抓取,PHP抓屏函数实现屏幕快照代码分享
- em算法的java实现_EM算法 - Java教程 - 找一找教程网
- 皮一皮:这大概就是年轻的味道...