前言:

#include <thread>

thread.join()      // 阻塞
thread.detach() // 非阻塞
thread.joinable() // bool,判断线程是否支持join或者detach

正文:

创建线程有三种方式,分别是:使用函数来创建线程、使用自定义的类来创建线程、使用lambda函数来创建线程

一、使用函数来创建线程

void func1()
{
cout << "我是不带参数的函数" << endl;
} void func2(int num)
{
cout << "我是带参数的函数,参数是:" << num << endl;
} int main()
{
cout << "thread begin" << endl; thread t1(func1);
t1.join(); thread t2(func2, 10);
t2.join(); cout << "thread end" << endl; return 0;
}

二、使用自定义的类来创建线程

#include <iostream>
#include <thread>
using namespace std; class myClass1
{
public:
// 重写operator方法
void operator()()
{
cout << "我是不带参数的类" << endl;
}
}; class myClass2
{
public:
int m_i;
myClass2(int i) :m_i(i) {};
void operator()()
{
cout << "我是带参数的类,参数是:" << m_i << endl;
}
}; int main()
{
cout << "thread begin" << endl; myClass1 c1;
thread t1(c1);
t1.join(); myClass2 c2(6);
thread t2(c2);
t2.join(); cout << "thread end" << endl;
return 0;
}

三、使用lambda表达式来创建线程

#include <iostream>
#include <thread>
using namespace std; int main()
{
cout << "thread begin" << endl; auto myLambda1 = [] {
cout << "卡布达 卡布达 我是不带参数的 lambda" << endl;
}; auto myLambda2 = [](int num) {
cout << "卡布达 卡布达 我是带参数的lambda,参数是:" << num << endl;
}; thread t1(myLambda1);
t1.join(); thread t2(myLambda2, 666);
t2.join(); cout << "thread end" << endl; return 0;
}

std::thread 一:创建线程的三种方式的更多相关文章

  1. 0036 Java学习笔记-多线程-创建线程的三种方式

    创建线程 创建线程的三种方式: 继承java.lang.Thread 实现java.lang.Runnable接口 实现java.util.concurrent.Callable接口 所有的线程对象都 ...

  2. Java并发编程:Java创建线程的三种方式

    目录 引言 创建线程的三种方式 一.继承Thread类 二.实现Runnable接口 三.使用Callable和Future创建线程 三种方式的对比 引言 在日常开发工作中,多线程开发可以说是必备技能 ...

  3. java创建线程的三种方式及其对比

    第一种方法:继承Thread类,重写run()方法,run()方法代表线程要执行的任务.第二种方法:实现Runnable接口,重写run()方法,run()方法代表线程要执行的任务.第三种方法:实现c ...

  4. AJPFX总结java创建线程的三种方式及其对比

    Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行 ...

  5. java创建线程的三种方式及其对照

    Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)定义Thread类的子类.并重写该类的run方法,该run方法的方法体就代表了线程要完毕的任务.因此把run()方法称为运行 ...

  6. Java多线程之创建线程的三种方式比较

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6560057.html  一:继承Thread类创建线程 1:继承Thread类定义线程子类: 2:重写run( ...

  7. Java创建线程的三种方式

    一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. (2)创建Thread子类的实 ...

  8. 创建线程的三种方式(Thread、Runnable、Callable)

    方式一:继承Thread类实现多线程: 1. 在Java中负责实现线程功能的类是java.lang.Thread 类. 2. 可以通过创建 Thread的实例来创建新的线程. 3. 每个线程都是通过某 ...

  9. Java中创建线程的三种方式以及区别

    在java中如果要创建线程的话,一般有3种方法: 继承Thread类: 实现Runnable接口: 使用Callable和Future创建线程. 1. 继承Thread类 继承Thread类的话,必须 ...

  10. 创建线程的三种方式_Callable和Runnable的区别

    Java 提供了三种创建线程的方法 通过实现Runnable接口 通过继承Thread接口 通过Callable和Future创建线程 通过实现 Runnable 接口来创建线程 public cla ...

随机推荐

  1. 方便快速的看到C/C++代码汇编 objdump 英特尔语法

    目录 概述 Objdump 所有参数 其他的 概述 因为奇怪的考试要求,最近经常有奇怪的问题,例如为什么(++a)+(++a)=14 发现反编译出汇编之后,就能解释很多奇怪的问题 Objdump 一次 ...

  2. C++ 函数指针,指针函数,左值右值

    C++ 函数指针,指针函数,左值右值 1.函数指针 是一个指针类型的变量,存放的内容都是函数的指针,用来间接调用函数,格式如下: int add( int a, int b) { return a+b ...

  3. CentOS 设置系统时间与网络时间同步

    CentOS 设置系统时间与网络时间同步 一.Linux的时间分为(两种) System Clock(系统时间) 指当前Linux Kernel中的时间 Real Time Clock (硬件时间,简 ...

  4. Java 常用类 String的使用---测试

    1 package com.bytezero.stringclass; 2 3 import org.junit.Test; 4 5 /** 6 * 7 * 8 * 9 * @author Bytez ...

  5. 来自 AI Secure 实验室的 LLM 安全排行榜简介

    近来,LLM 已深入人心,大有燎原之势.但在我们将其应用于千行百业之前,理解其在不同场景下的安全性和潜在风险显得尤为重要.为此,美国白宫发布了关于安全.可靠.可信的人工智能的行政命令; 欧盟人工智能法 ...

  6. 基于python的每日固定时间执行实例解析

    一 概念 datetime模块属性如下所示:   二 源码解析 该源码中,对时间库datetime应用十分到位,可以看作如下所示: import datetime import threading d ...

  7. kettle入门教程-表同步插入

    在平时工作当中,会遇到这种情况,而且很常见.比如:增量抽取(每隔2个小时抽取截至到上次抽取时间的记录)一.操作前提:存在3张表,源表(t_student),同步日志表(t_tbrz),插入表(t_ta ...

  8. 短小精悍的npm入门级保姆教程,一篇包会

    npm是什么? npm是一个强大的包管理工具,它使开发人员能够轻松地安装.更新和管理项目依赖的包.通过初始化一个package.json 文件,我们可以描述你的项目并记录其依赖关系.使用npm ins ...

  9. MySQL(视图、事务、存储过程、函数、流程控制、索引)

    一 视图(了解) 什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次可以直接使用 为什么要用视图 如果要频繁的操作一张虚拟表(拼表组成的),你就可以制作成视图,后续直接操作 视图其实也是一 ...

  10. python高级技术(进程二)

    一 进程对象及其他方法 '''一台计算机上面运行着很多进程,那么计算机是如何区分并管理这些进程服务端的呢?计算机会给每一个运行的进程分配一个PID号如何查看 windows电脑 进入cmd输入task ...