linux系统编程——线程

ops/2024/10/18 19:24:07/

一、线程

1、定义

轻量级的进程。进程就相对的变成了重量级的进程(单个控制线程)。

2、组成

线程ID(tid)、程序计数器、寄存器集合、栈、

3、线程与进程比较

(1)线程成为CPU执行的最小单元;

        线程创建和调度的时空开销都比进程小;线程与同一进程的其他线程共享代码、数据段、其他操作系统资源。

(2)进程成为资源分配的基本单位。

4、线程与进程关系

(1)线程存在于进程中;

(2)线程共享了进程的资源;

(3)线程结束进程不一定结束。

二、线程的编程

线程的创建、线程的执行、线程的退出、线程结束时的资源回收。

1、创建线程

pthread_create

        int pthread_create(pthread_t *thread(线程id) , const pthread_attr_t *attr (属性), void *(*start_routine)(void*) (线性执行函数), void *arg(回调函数参数))

(1)线性执行函数,也是线程回调函数:完成线程任务功能的函数,需调用者自己实现。

        <是指向指针函数的函数指针>

(2)属性一般为NULL,是默认属性(可结合性),需要手动回收;还有一种分离属性,系统自动回收。

gcc编译时要加 -lpthread选项。

注意:主函数所在的执行流是主线程;其他线程为子线程(次线程)。各线程间是平等的。

        可以通过pthread_self()函数获得线程 tid号

2、线程的执行

就体现在线程的回调中。

3、线程的退出

(1)pthread_exit

        void pthread_exit(void *retval(退出状态值对应地址))

结束调用的线程。如果用在main函数中,表示结束主线程。

主线程执行流结束后,进程会在其余线程结束后结束。

(2)线程退出时,可以带出退出状态值,但是传的是退出状态值对应空间的地址

(3)pthread_exit

        int pthread_join(pthread_t thread(线程tid) , void **retval(用来保存退出状态值所在空间的地址))

获得退出状态值参数。等待线程结束。


http://www.ppmy.cn/ops/94247.html

相关文章

Qt实现中英文切换中QMessageBox中的中文信息怎么处理

有粉丝看了《Qt实现中英文切换》文章后&#xff0c;留言说“中英文切换中QMessageBox中的中文信息怎么处理”&#xff0c;这篇文章就告诉你处理方法。 1&#xff0c;QMessageBox OK或Cancel提示语句 QMessageBox::information(this, QString::fromLocal8Bit("测试")…

VUE(一)——nextTick

DOM更新循环结束后执行延迟回调&#xff0c;在数据修改以后立即使用该方法可获取更新后的DOM。 &#xff08;*问题1&#xff09;DOM更新循环&#xff1f; VUE中使用异步执行DOM更新&#xff0c;在修改数据之后视图不会立即更新&#xff0c;而是等同一事件循环中的所有数据变化…

mysql主从服务配置

主从MySQL服务器 [rootlocalhost ~]# yum -y install ntpdate [rootlocalhost ~]# ntpdate cn.ntp.org.cn [rootlocalhost ~]# yum -y install rsync [rootlocalhost ~]# vim mysql.sh #!/bin/bash yum list installed |grep libaio if [ $? ne 0 ]; then yum -y install…

Mybatis参数与返回值问题

参数问题 最便捷的方法是在传的参数前面加上标记&#xff0c;使用param注解来进行参数的唯一标记 返回值问题 返回值为单个属性的时候 //接口中方法设计&#xff0c;返回值为String&#xff1a; String getUser(int id); //XML中语法&#xff1a; <select id"getUse…

gitignore文件的使用

在使用GitLab进行版本控制时&#xff0c;如果你想要忽略一些文件或目录不被提交(比如生成的权重、预测的图片等)&#xff0c;你可以在项目的根目录下创建或编辑一个.gitignore文件。在这个文件中&#xff0c;你可以列出那些你希望Git忽略的文件和目录的模式。 1. 基本语法 每…

【HBZ分享】MYSQL的联合索引 与 覆盖索引

混淆&#xff1a; 联合索引和覆盖索引是什么关系&#xff0c;二者是一个意思吗&#xff1f; 二者肯定不是一个意思&#xff0c;并且二者间不存在包含或者强依赖关系&#xff0c;可以认为是两个不同的概念&#xff0c;只是有交集而已。联合索引&#xff1a;当创建的所以中包含多…

基于Python的孔夫子旧书网热销书籍爬虫与可视化分析报告

摘要&#xff1a;随着社会的不断发展&#xff0c;数据时代的到来&#xff0c;数据的背后是什么&#xff0c;数据有什么用&#xff0c;怎么用庞大的数据来呈现出数据的价值&#xff0c;让我们一起去揭开它神秘的面纱。 以孔夫子旧书网热销书籍5本图书数据爬取为例&#xff0c;介…

Web大学生网页作业成品——美食企业曹氏鸭脖介绍网站设计与实现(HTML+CSS+JS)(4个页面)

&#x1f389;&#x1f389;&#x1f389; 常见网页设计作业题材有**汽车、环保、明星、文化、国家、抗疫、景点、人物、体育、植物、公益、图书、节日、游戏、商城、旅游、家乡、学校、电影、动漫、非遗、动物、个人、企业、美食、婚纱、其他**等网页设计题目, 可满足大学生网…