Linux系统编程——线程

news2025/1/16 21:03:26

守护进程

守护进程:

daemon进程。通常运行与操作系统后台,脱离控制终端。
一般不与用户直接交互。
周期性的等待某个事件发生或周期性执行某一动作。
不受用户登录注销影响。
通常采用以a结尾的命名方式。

守护进程创建步骤;

  1. fork子进程,让父进程终止。
  2. 子进程调用setsid()创建新会话
  3. 通常根据需要,改变工作目录位置chdir()
  4. 通常根据需要,重设umask文件权限掩码
  5. 通常根据需要,关闭/重定向文件描述符6.守护进程业务逻辑。while ()

使用案例:

在这里插入图片描述

线程

1.线程概念:

进程:有独立的进程地址空间。有独立的pcb。分配资源的最小单位。

线程:有独立的pcb。没有独立的进程地址空间。最小单位的执行。

ps -Lf 进程id —>线程号。 LWP -->cpu执行的最小单位。

2.线程共享:

独享栈空间(内核栈、用户栈)

共享./text./ data ./rodataa ./bsss heap —〉全局变量。(errno)

3.线程控制原语:

pthread_t pthread_self(void);

	获取线程id。线程id是在进程地址空间内部,用来标识线程身份的ia号。
	返回值: 本线程id

int pthread_create(pthread_t *tid,const pthread_attr_t *attr,void *(*start_rountn)(void *),void *arg);

	参1:传出参数,表新创建的子线程id
	参2:线程属性。传NULL表使用默认属性。
	参3:子线程回调函数。创建成功,ptherad_create函数返回时,该函数会被自动调用。
	参4:参3的参数。没有的话,传NULL
	返回值:成功:0;失败:errno

使用案例:

在这里插入图片描述
循环创建N个子线程:

for (i = 0;i < 5; i++)
	pthread_create(&tid,NULL,tfn,(void *)i);	将int类型i,强转成void *,传参。

退出当前线程:

void pthread_exit(void *retva1); 	
retva1:退出值。无退出值时,NULL

exit();退出当前进程。
return:返回到调用者那里去。
pthread_exit()退出当前线程。

设置线程分离

int pthread_detach(pthread_t thread) ;
thread:待分离的线程id
返回值:成功:0;失败:errno

杀死一个线程。需要到达取消点(保存点)

int pthread_cance1 (pthread_t thread);
thread:待杀死的线程id
返回值:成功:0;失败:errno

如果,子线程没有到达取消点,那么pthread_cance1无效。
我们可以在程序中,手动添加一个取消点。使用pthread_testcance1();成功被pthread_cance1()杀死的线程,返回-1.使用pthead_join回收。

线程控制原语

pthread_createI
pthread_self

进程控制原语

fork();
getpid();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/158838.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

年轻人的颜值担当,当下正流行的开关面板设计,你pick哪一款?

在颜值即正义的时代 越来越多的年轻人选择产品时 除了关注产品的功能外 也愈加愿意为产品的颜值买单近年来&#xff0c;鸿雁从大自然和生活中汲取灵感 以年轻、新鲜、现代的设计风格 赋予开关面板更有格调的外形 引领了墙面上的家居美学 下面&#xff0c;小雁带大家一起从鸿雁热…

微服务调用组件Feign的原理及高级功能实战

目录 一、Fegin的原理 二、Spring Cloud 整合Feign 三、Spring Cloud整合Dubbo 微服务调用组件Feign的原理及高级功能是我们今天分享的主题&#xff0c;此组件可以说是微服务必用的&#xff0c;服务远程调用&#xff0c;属于RPC远程调用的一种&#xff0c;RPC 全称是 Remote …

如何划分子网(例题讲解)

44(12分)设某ISP拥有一个网络地址块201.123.16.0/21,现在该ISP要为A、B、C、D四个组织分配IP地址,其需要的地址数量分别为985、486、246以及211,而且要求将低地址段的 IP 地址分配给 IP 地址需求量大的组织。请给出一个合理的分配方案以满足该需求。要求将各组织所获得的子网地…

2023年,推荐10个让你事半功倍的CSS在线生产力工具

谈到 CSS&#xff0c;您总是必须编写许多代码行&#xff0c;才能使您的项目在样式方面看起来美观大方。当然&#xff0c;专注于为前端编写好的 CSS 很重要&#xff0c;但这个过程可能会花费很多时间。作为 Web 开发人员&#xff0c;CSS 是我们开展项目时必不可少的语言之一。我…

从GPT到chatGPT(一):GPT1

GPT1 文章目录GPT1前言正文模型架构无监督学习有监督学习处理不同特定任务实验训练细节实验结果分析预训练层参数转移的影响zero-shot的表现消融实验总结前言 GPT1&#xff0c;出自于OpenAI的论文《Improving Language Understanding by Generative Pre-Training》&#xff0c…

Serverless介绍

Serverless架构应该是采用FaaS&#xff08;函数即服务&#xff09;和Baas&#xff08;后端即服务&#xff09;服务来解决问题的一种设计 狭义Serverless FaaS BaaS BaaS: Bakend as a Service 负责存储后端即服务&#xff1a;Serverless把后端架构工作包揽下来&#xff0c;硬…

CIO如何控制老板提需求?CIO PLUS

老板乱提需求&#xff0c;员工苦不堪言&#xff0c;职场中经常听到吐槽老板的言论&#xff0c;这个话题很有意思。因为一般老板这个角色基本上是不会管公司具体业务的&#xff0c;公司运营一般都是由专业的职业经理人就是CEO来管理&#xff0c;所以作为公司的老板就更不可能亲自…

Web(五)

JavascriptDOM* 功能&#xff1a;控制html文档的内容* 获取页面标签(元素)对象&#xff1a;Element* document.getElementById("id值"):通过元素的id获取元素对象* 操作Element对象&#xff1a;1. 修改属性值&#xff1a;明确获取的对象是哪一个&#xff1f;查看API文…

【SpringCloud06】SpringCloud Eureka 服务注册与发现

1.Eureka基础知识 1.1什么是服务治理&#xff1f; Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理 在传统的rpc远程调用框架中&#xff0c;管理每个服务与服务之间依赖关系比较复杂&#xff0c;管理比较复杂&#xff0c;所以需要使用服务治理&#xff0…

Linux - top命令详解

目录top启动参数基础字段说明第一行&#xff0c;系统任务统计信息&#xff1a;第二行&#xff0c;进程统计信息&#xff1a;第三行&#xff0c;CPU统计信息&#xff1a;第四行&#xff0c;内存统计信息&#xff1a;第五行&#xff0c;swap交换分区统计信息&#xff1a;第六行&a…

堆和栈详解js

认识堆和栈学习编程的时候&#xff0c;经常会看到stack这个词&#xff0c;它的中文名字叫做"栈"。理解这个概念&#xff0c;对于理解程序的运行至关重要。容易混淆的是&#xff0c;这个词其实有几种含义在理解堆与栈这两个概念时&#xff0c;需要放到具体的场景下去理…

基于java SSM图书管理系统简单版设计和实现

基于java SSM图书管理系统简单版设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式…

软件测试/测试开发 | Jenkins通过什么方式报警?

在工作中&#xff0c;一般是没有时间一直看着 Jenkins 直到它运行结果出现的。所以采用了配置 Email 的方式&#xff0c;可以及时将结果通知给我们。 所需要用到的Jenkins插件 需要下载的 Email 插件名称&#xff0c;这两个插件的作用是帮助用户方便的设置格式化邮件&#xf…

【Java集合】开发中如何选择集合实现类

在实际开发中&#xff0c;选择什么集合实现类&#xff0c;主要取决于业务操作的特点&#xff0c;然后根据集合实现类特性进行选择&#xff1a; &#x1f449; 先判断存储的类型&#xff08;一组对象或一组键值对&#xff09;&#xff1a; 一组对象 【单列】&#xff1a;Colle…

ES6-11这一篇就够啦

ES6-11这一篇就够啦ECMAScript 6-111、ECMAScript 相关介绍1.1 ECMAScript简介1.2 ES6的重要性2、ECMAScript 6新特性2.1 let关键字2.2 const关键字2.3 变量的解构赋值2.4 模板字符串2.5 简化对象写法2.6 箭头函数2.7 rest参数2.8 spread扩展运算符2.9 Symbol2.10 迭代器2.11 生…

在GCP上创建GCE的三种方式(Console,gcloud,Terraform)

1 简介 如果要选择GCP为云平台&#xff0c;则经常需要创建GCE(Google Compute Engine)&#xff0c;有以下几种方式&#xff1a; (1) 在浏览器创建 (2) 命令 gcloud (3) Terraform 在开始之前&#xff0c;可以查看&#xff1a;《初始化一个GCP项目并用gcloud访问操作》。 …

MATLAB算法实战应用案例精讲-【数据分析】非参数估计:核密度估计KDE

前言 核密度估计(Kernel Density Estmation,KDE)认为在一定的空间范围内,某种事件可以在任何位置发生,但是在不同的地理位置上发生的概率是不一样的,如果在某一区域内其事件发生的次数较多则认为此区域内此事件发生的频率高,反之则低。另外根据地理学第一定律,即:距离…

python开发exe(无GUI)的踩坑笔记

笔者也经常在网上查询信息,但发现很多信息都是照搬,内容甚至有错误,可用性很低.笔者就认为如果要分享就应该把遇到的问题真实的分享出来,让更多同路人少走弯路.节约时间.觉得这篇文章有帮助的同学可以点个赞!将真有用的信息传递给更多人!python开发exe(无GUI)的踩坑笔记pyinsta…

你写过最愚蠢的代码是?

最近写的一些代码&#xff0c;拿出来给大伙看看&#xff0c;毕竟丢的是我的脸。第一个&#xff0c;是帮忙一个朋友看的力扣题目&#xff0c;然后就自己写了下题目如下&#xff1a;https://leetcode.cn/problems/median-of-two-sorted-arrays/代码写成这样void merge(int* nums1…

输入输出系统

文章目录前言前置知识实验操作实验一实验二实验三实验四实验五前言 博客记录《操作系统真象还原》第十章实验的操作~ 实验环境&#xff1a;ubuntu18.04VMware &#xff0c; Bochs下载安装 实验内容&#xff1a; 添加关中断的方式保证原子性。用锁实现终端输出。从键盘获取输…