学习C++笔记402

简介: C++ 多线程

实例

// 演示多线程的CPP程序

// 使用三个不同的可调用对象

#include

#include

usingnamespace std;

 

// 一个虚拟函数

void foo(int Z)

{

   for(int i =0; i < Z; i++){

       cout<<"线程使用函数指针作为可调用参数\n";

   }

}

 

// 可调用对象

class thread_obj {

public:

   void operator()(int x)

   {

       for(int i =0; i < x; i++)

           cout<<"线程使用函数对象作为可调用参数\n";

   }

};

 

int main()

{

   cout<<"线程 1 、2 、3 "

        "独立运行"<< endl;

 

   // 函数指针

   thread th1(foo, 3);

 

   // 函数对象

   thread th2(thread_obj(), 3);

 

   // 定义 Lambda 表达式

   auto f =[](int x){

       for(int i =0; i < x; i++)

           cout<<"线程使用 lambda 表达式作为可调用参数\n";

   };

 

   // 线程通过使用 lambda 表达式作为可调用的参数

   thread th3(f, 3);

 

   // 等待线程完成

   // 等待线程 t1 完成

   th1.join();

 

   // 等待线程 t2 完成

   th2.join();

 

   // 等待线程 t3 完成

   th3.join();

 

   return0;

}

使用 C++ 11 的编译参数 -std=c++11:

g++-std=c++11 test.cpp

当上面的代码被编译和执行时,它会产生下列结果:

线程123独立运行

线程使用函数指针作为可调用参数

线程使用函数指针作为可调用参数

线程使用函数指针作为可调用参数

线程使用函数对象作为可调用参数

线程使用函数对象作为可调用参数

线程使用函数对象作为可调用参数

线程使用lambda表达式作为可调用参数

线程使用lambda表达式作为可调用参数

线程使用lambda表达式作为可调用参数

目录
相关文章
|
8天前
|
存储 C++ 容器
C++STL(标准模板库)处理学习应用案例
使用C++ STL,通过`std:vector`存储整数数组 `{5, 3, 1, 4, 2}`,然后利用`std::sort`进行排序,输出排序后序列:`std:vector&lt;int&gt; numbers; numbers = {5, 3, 1, 4, 2}; std:sort(numbers.begin(), numbers.end()); for (int number : numbers) { std::cout &lt;&lt; number &lt;&lt; &quot; &quot;; }`
15 2
|
19天前
|
存储 编译器 C语言
C++入门: 类和对象笔记总结(上)
C++入门: 类和对象笔记总结(上)
30 0
|
19天前
|
存储 安全 编译器
C++学习过程中的一些值得注意的小点(1)
C++学习过程中的一些值得注意的小点(1)
|
20天前
|
存储 算法 数据库
【C++ 软件设计思路】学习C++中如何生成唯一标识符:从UUID到自定义规则
【C++ 软件设计思路】学习C++中如何生成唯一标识符:从UUID到自定义规则
102 0
|
29天前
|
C++
C++学习系列---读取文件名存入txt和从txt读取每行信息
C++学习系列---读取文件名存入txt和从txt读取每行信息
|
26天前
|
编译器 测试技术 C++
【Python 基础教程 01 全面介绍】 Python编程基础全攻略:一文掌握Python语法精髓,从C/C++ 角度学习Python的差异
【Python 基础教程 01 全面介绍】 Python编程基础全攻略:一文掌握Python语法精髓,从C/C++ 角度学习Python的差异
154 0
|
8天前
|
程序员 C++
C++语言模板学习应用案例
C++模板实现通用代码,以适应多种数据类型。示例展示了一个计算两数之和的模板函数`add&lt;T&gt;`,可处理整数和浮点数。在`main`函数中,展示了对`add`模板的调用,分别计算整数和浮点数的和,输出结果。
9 2
|
22天前
|
设计模式 算法 测试技术
【C/C++ 编程 哑对象】了解和学习哑对象在C/C++ 编程中的使用
【C/C++ 编程 哑对象】了解和学习哑对象在C/C++ 编程中的使用
42 2
|
29天前
|
算法 C++ 计算机视觉
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
|
29天前
|
算法 计算机视觉 C++
Opencv(C++)学习系列---Sobel索贝尔算子边缘检测
Opencv(C++)学习系列---Sobel索贝尔算子边缘检测