多线程的使用与解释

news/2025/2/14 7:13:14/

多线程

文章目录

  • 多线程
    • 什么是多线程
    • 线程特点
    • 线程的使用
      • 线程的创建
      • 线程ID获得
      • 线程终止
      • 线程等待
      • 进程分离

什么是多线程

是资源调用的最小单位。一个进程内部的控制序列。线程是调度的基本单位。

线程有共享进程的数据,也有自己 的一部分数据
在这里插入图片描述

线程特点

1,性能消耗小,创建代价小。

2,跟随进程同时进行存活

3,健壮性比较低,缺少保护

4,编程难度提高

5,多个线程享用一个地址空间

线程的使用

线程的创建

pthread_t tid;
pthread_create(tid,nullptr,要跑的函数,*arg);

成功返回0,失败返回错误码。这里返回的错误码可以使用strerror函数进行处理,可以输出相应的错误信息。不会返回错误信息到errno上面去。

image-20230411154850925

线程ID获得

int pid = pthread_self();

这样可以获得线程的ID

image-20230411154804187

线程终止

pthread_exit();

只可以进行自身调用进行终止

image-20230411155409878

线程等待

pthread_join(tid,nullptr);

进行之前线程推出的没有释放的资源进行释放,让其他的进程可以进行资源的复用(防止出现内存泄露)

image-20230411155500718

进程分离

pthread_detch();

进行线程分离工作之后,线程的存在活时间就不是由于主进程所决定的了,就是接受OS的管理进行退出等操作。可以线程对于自己进行退出,也可以其他的线程或者进程对于其他的线程进行分离。

image-20230411160623674


http://www.ppmy.cn/news/41434.html

相关文章

Devops流程探究

1、DevOps面向对象 软件开发是由开发团队和运维团队共同协同配合才能完成一个软件的开发。 2、开发团队和运维团队 开发团队主要负责软件的开发和迭代更新,运维团队则是负责测试和部署上线。 3、解决问题 但是,这样会存在一个问题,只有当…

Java知识点学习(第2天)

为什么不建议使用Executors来创建线程池? FixedThreadPool 当我们使用Executors创建FixedThreadPool时,对应的构造方法为: public static ExecutorService newFixedThreadPool(int nThreads) {return new ThreadPoolExecutor(nThreads,nThr…

互联网摸鱼日报(2023-04-11)

互联网摸鱼日报(2023-04-11) InfoQ 热门话题 裁员潮过去、削减中层管理潮又来了:升管理保饭碗,不灵了 微博增值团队可观测性落地实践与回顾-上篇 CVPR 2023|两行代码高效缓解Vision Transformer过拟合,美…

JUnit5学习

以下学习内容基于JUnit5英文文档和中文文档 目录 JUnit 5是什么 注解说明 元注解和组合注解 标准测试类 显示名称(DisplayName) 断言(Assertions) 假设(Assumptions) 条件测试执行(Conditional Test Execution) 标签和过滤(Tagging and Filtering) 测试执行顺序 测试…

JavaScript 进阶 - 0基础第二天

JavaScript 进阶 - 第二天 了解面向对象编程的基础概念及构造函数的作用,体会 JavaScript 一切皆对象的语言特征,掌握常见的对象属性和方法的使用。 深入对象内置构造函数综合案例 深入对象 了解面向对象的基础概念,能够利用构造函数创建对象…

R语言实践——ggplot2+ggrepel绘制散点+优化注释文本位置

简介 书接adjustText实践——调整matplotlib散点图标签,避免重复 上文中,matplotlibadjustText对于我的实例来说并没有起到很好的效果。所以,博主决定在R中利用gglot2ggrepel绘制,期待效果。 操作过程 博主不常使用R&#xff…

三分钟了解什么是时序数据库

在介绍时序数据库之前,我们先来看看什么是时序数据。时序数据就是基于时间排序的数据,再通过时间坐标将这些数据连接起来,形成一个折线图,直观地展示一个指标在过去一段时间内的走势和规律,帮助定位数据异常点。 时序…

Vue自定义指令

一、认识自定义指令 目录 一、认识自定义指令 方式一、使用默认实现方式,使用 ref 实现,并抽取到 hooks,方便调用。 方式二、自定义一个 v-focus 的局部指令 方式三:自定义一个 v-focus 的全局指令 某些情况,你需要…