学习C++笔记397

简介: C++ 多线程

以下简单的实例代码使用 pthread_create() 函数创建了 5 个线程,并接收传入的参数。每个线程打印一个 "Hello Runoob!" 消息,并输出接收的参数,然后调用 pthread_exit() 终止线程。

实例

//文件名:test.cpp#include<iostream>#include<cstdlib>#include<pthread.h>usingnamespacestd;  #defineNUM_THREADS     5void *PrintHello(void *threadid){      // 对传入的参数进行强制类型转换,由无类型指针变为整形数指针,然后再读取   inttid = *((int*)threadid);    cout << "Hello Runoob! 线程 ID, " << tid << endl;    pthread_exit(NULL);}intmain(){   pthread_tthreads[NUM_THREADS];    intindexes[NUM_THREADS];// 用数组来保存i的值   intrc;    inti;    for(i=0; i < NUM_THREADS; i++ ){             cout << "main() : 创建线程, " << i << endl;       indexes[i] = i; //先保存i的值      // 传入的时候必须强制转换为void* 类型,即无类型指针              rc = pthread_create(&threads[i], NULL,                            PrintHello, (void *)&(indexes[i]));       if(rc){         cout << "Error:无法创建线程," << rc << endl;          exit(-1);       }   }   pthread_exit(NULL);}

现在编译并执行程序,将产生下列结果:

$ g++ test.cpp -lpthread -o test.o

$ ./test.o

main():创建线程,0

main():创建线程,1

HelloRunoob!线程 ID,0

main():创建线程,HelloRunoob!线程 ID,21


main():创建线程,3

HelloRunoob!线程 ID,2

main():创建线程,4

HelloRunoob!线程 ID,3

HelloRunoob!线程 ID,4

目录
相关文章
|
22天前
|
C++
c++的学习之路:27、红黑树
c++的学习之路:27、红黑树
31 4
|
22天前
|
存储 C++ 容器
c++的学习之路:26、AVL树
c++的学习之路:26、AVL树
28 0
|
6天前
|
编译器 C++
【C++】继续学习 string类 吧
首先不得不说的是由于历史原因,string的接口多达130多个,简直冗杂… 所以学习过程中,我们只需要选取常用的,好用的来进行使用即可(有种垃圾堆里翻美食的感觉)
7 1
|
6天前
|
算法 安全 程序员
【C++】STL学习之旅——初识STL,认识string类
现在我正式开始学习STL,这让我期待好久了,一想到不用手撕链表,手搓堆栈,心里非常爽
15 0
|
6天前
|
存储 安全 测试技术
【C++】string学习 — 手搓string类项目
C++ 的 string 类是 C++ 标准库中提供的一个用于处理字符串的类。它在 C++ 的历史中扮演了重要的角色,为字符串处理提供了更加方便、高效的方法。
16 0
【C++】string学习 — 手搓string类项目
|
15天前
|
编译器 C语言 C++
【C++入门学习指南】:函数重载提升代码清晰度与灵活性
【C++入门学习指南】:函数重载提升代码清晰度与灵活性
23 0
|
16天前
|
安全 Java 程序员
【C++笔记】从零开始认识继承
在编程中,继承是C++的核心特性,它允许类复用和扩展已有功能。继承自一个基类的派生类可以拥有基类的属性和方法,同时添加自己的特性。继承的起源是为了解决代码重复,提高模块化和可维护性。继承关系中的类形成层次结构,基类定义共性,派生类则根据需求添加特有功能。在继承时,需要注意成员函数的隐藏、作用域以及默认成员函数(的处理。此外,继承不支持友元关系的继承,静态成员在整个继承体系中是唯一的。虽然多继承和菱形继承可以提供复杂的设计,但它们可能导致二义性、数据冗余和性能问题,因此在实际编程中应谨慎使用。
17 1
【C++笔记】从零开始认识继承
|
20天前
|
C++
C++从入门到精通:2.1.2函数和类——深入学习面向对象的编程基础
C++从入门到精通:2.1.2函数和类——深入学习面向对象的编程基础
|
21天前
|
缓存 网络协议 编译器
针对Android系统工程师的C/C++学习目录
针对Android系统工程师的C/C++学习目录
6 0
|
22天前
|
存储 自然语言处理 C++
c++的学习之路:25、map与set
c++的学习之路:25、map与set
15 0