目录

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类多线程编程相关推荐

  1. C++ 11使用thread类多线程编程

    转自https://blog.csdn.net/dcrmg/article/details/53912941 C++11中引入了一个用于多线程操作的thread类,简单多线程示例: [cpp] vie ...

  2. C 多线程编程之在类中使用多线程(thread)的方法

    一.thread的基本用法 参见C++使用thread类多线程编程 . 二.类外使用多线程,访问类的成员 这几种方式,新建线程都是在类外,然后通过把友元函数或者成员函数作为thread参数. #inc ...

  3. Android中的多线程编程与异步处理

    Android中的多线程编程与异步处理 引言 在移动应用开发中,用户体验是至关重要的.一个流畅.高效的应用能够吸引用户并提升用户满意度.然而,移动应用面临着处理复杂业务逻辑.响应用户输入.处理网络请求 ...

  4. Linux环境下,C++实现龟兔赛跑的多线程编程

    编程 使⽤ Thread 实现多线程编程 题目:龟兔赛跑,跑道距离50米.乌龟(作为⼀个线程) 每秒3米,不睡觉 : 兔子(作为⼀个线程)每秒5米,每跑15⽶睡2秒钟.请模拟比赛情况. #includ ...

  5. c#.net多线程编程教学(2):Thread类

    这章将向大家介绍.NET中的线程API,怎么样用C#创建线程,启动和停止线程,设置优先级和状态. 在.NET中编写的程序将被自动的分配一个线程.让我们来看看用C#编程语言创建线程并且继续学习线程的知识 ...

  6. Python多线程编程---(1)threading 模块 Thread 类

    全文参考:Python多线程编程(一):threading 模块 Thread 类的用法详解_frank 的专栏-CSDN博客 最近看了下团队自动化测试用例的代码,里面有涉及并行处理的逻辑,主要是基于 ...

  7. python创建线程函数_Python多线程编程(三):threading.Thread类的重要函数和方法...

    这篇文章主要介绍threading模块中的主类Thread的一些主要方法,实例代码如下: 复制代码 代码如下: ''' Created on 2012-9-7 @author:  walfred @m ...

  8. Python多线程编程(一):threading 模块 Thread 类的用法详解

    我们进行程序开发的时候,肯定避免不了要处理并发的情况. 一般并发的手段有采用多进程和多线程. 但线程比进程更轻量化,系统开销一般也更低,所以大家更倾向于用多线程的方式处理并发的情况. Python 提 ...

  9. C++多线程:thread类创建线程的多种方式

    文章目录 描述 函数成员简介 总结 描述 头文件 <thread> 声明方式:std::thread <obj> 简介 线程在构造关联的线程对象时立即开始执行,从提供给作为构造 ...

最新文章

  1. @SkipValidation跳过Struts2validation校验器
  2. python中国地图热力图是什么意思_python实现输入的数据在地图上生成热力图效果...
  3. 创业感悟:技术兄弟为什么一直没有起来(1)
  4. 从零开始学习PYTHON3讲义(二)把Python当做计算器
  5. 隐私与AI兼得,蚂蚁金服是如何做到的?
  6. Opencv--cvSetImageROI和cvResetImageROI的使用
  7. win2003下APACHE2.050+PHP5+MYSQL4.0.20+PHPMYADMIN2.57 的简易安装配置
  8. 哐!英特尔的无人机砸中你头顶
  9. NLP之电影评分数据的情感分析
  10. 工单、工艺路线及工作中心的表结构
  11. kylin2.1.0 + CHD5.7环境搭建
  12. php启动后no input file specified.,php网站出现no input file specified 三种解决方法
  13. 【数据结构】串(一)—— 串的基础知识
  14. 不要猥琐就是浪,特斯拉这一季度又亏大发了
  15. C++ search()函数用法详解(深入了解,一文学会)
  16. MOS管和三极管区别-对比很显然
  17. 高数考研归纳 - 微分学 - 中值定理
  18. linux 驱动笔记(四)
  19. 被问麻了,Spring 如何处理循环依赖?
  20. 《聆听宇宙的歌唱》——超越故乡

热门文章

  1. 安装bigsur卡在12分钟_Big Sur为什么安装不了?macOS Big Sur无法完成安装的解决办法!...
  2. 河南计算机程序大赛,我院成功举办河南省第十一届ACM大学生程序设计竞赛
  3. oracle根据_分割字符串,oracle分割字符串函数
  4. 怀旧服湖畔镇服务器位置,《魔兽世界怀旧服》今天再开10组新服 47组服务器免费转服开启...
  5. 华为旗舰陆续升级鸿蒙系统,华为鸿蒙重磅来袭:今年4月起 华为旗舰手机将陆续升级鸿蒙系统!...
  6. 我是非计算机专业学生,非计算机专业学生怎么走上计算机技术之路?
  7. go语言支持继承吗_Go语言的结构体嵌入为什么不算继承?
  8. php屏幕抓取,PHP抓屏函数实现屏幕快照代码分享
  9. em算法的java实现_EM算法 - Java教程 - 找一找教程网
  10. 皮一皮:这大概就是年轻的味道...