1.5号io网络

僵尸进程和孤儿进程

僵尸进程

孤儿进程

守护进程

1.守护进程相当于一个服务,不依赖于终端而存在

2.守护进程随着系统的启动而启动,关闭而关闭

3.守护进程创建流程

1、创建一个孤儿进程

2、重设守护进程的会话id和组id

3、修改守护进程的操作目录为根目录

4、修改守护进程的创建文件的掩码为最大权限

5、将标准输入、标准输出、标准错误文件描述符重定向到一个文件中

6、该文件称为该守护进程的日志文件

4.相关API函数

#include <sys/types.h>

#include <unistd.h>

pid_t setsid(void);

功能:为当前进程创建一个新的会话,并将调用进程设置成会话组组长

参数:无

返回值:新会话的ID,失败返回-1并置位错误码

#include <unistd.h>

int chdir(const char *path);

功能:更改当前进程的操作目录

参数:要操作的起始目录

返回值:成功返回0,失败返回-1并置位错误码

#include <sys/types.h>

#include <sys/stat.h>

mode_t umask(mode_t mask);

功能:设置当前进程创建文件的掩码的值

参数:要创建的掩码值

返回值:成功之前的掩码的值,不会失败

多线程

多线程概念

1> 多线程也能实现多任务并发执行

2> 多线程:成为轻量版进程(LWP),是粒度更小的调度单元

3> 线程是执行任务的最小单位,进程是资源分配的最小单位

4> 一个进程,可以包含多个线程,但是至少要包含一个线程(主线程)

5> 线程几乎不占用资源,仅仅占用有关线程属性的一些资源,大概有8K左右

6> 同一个进程中的多个线程,共享进程的资源,可能会产生资源的抢占(竞态)

7> 由于线程体较小,任务调度线程时所需开销也较小,所以多任务编程是,大多选择多线程

8> 每个线程拥有自己唯一的一个线程号(tid)

9> 线程的调度原则:时间片轮询上下文切换

10> 关于线程相关函数,需要连接外部库进行操作,编译时需要加上:-pthread

线程创建 pthread_create

#include <pthread.h>

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);

功能:在当前进程中,创建一个新的线程

参数1:线程号指针,传递一个存放线程号的变量

参数2:线程属性,一般为NULL,表示使用默认的线程属性

参数3:线程体函数,是一个函数指针,需要传递一个返回值为void*类型参数为void*类型的函数名 参数4:参数3的参数,表示创建线程向新线程中传递(返回)的内容

返回值:成功返回0,失败返回一个错误码(非内核提供的错误码)

编译时需要加上-pthread

多线程的资源分配问题

同一进程中的多个线程共享进程的资源

可以使用全局变量,完成不同线程间的消息通信

主线程向分支线程传递数据

传递单个数据

传递多个数据

创建结构体

线程号的获取:pthread_self

#include <pthread.h>

pthread_t pthread_self(void);

功能:获取当前线程的线程号

参数:无

返回值:当前线程的线程号,不会失败

线程退出函数:pthread_exit

#include <pthread.h>

void pthread_exit(void *retval);

功能:退出当前线程

参数:线程退出时的状态,一般填NULL

返回值:无

线程的回收函数:pthread_join/pthread_detach

#include <pthread.h>

int pthread_join(pthread_t thread, void **retval);

功能:以阻塞的形式回收线程的资源

参数1:要回收的线程tid号

参数2:接收线程退出时的状态,一般填NULL

返回值:成功返回0,失败返回一个错误码

#include <pthread.h>

int pthread_detach(pthread_t thread);

功能:将线程设置成分离态,被设置成分离态的线程退出后,其资源由系统回收

向线程发送取消信号 pthread_cancel

#include <pthread.h>

int pthread_cancel(pthread_t thread);

功能:向一个指定线程中发送一个取消请求

参数:线程号

返回值:成功返回0,失败返回非0错误码

#include <pthread.h>

int pthread_setcancelstate(int state, int *oldstate);

功能:设置当前线程是否要接受其他线程的取消请求

参数1:状态 PTHREAD_CANCEL_ENABLE:可接受取消请求(默认) PTHREAD_CANCEL_DISABLE:不可接收取消请求

参数2:接受当前线程旧的状态,如果不想接受。填NULL即可

返回值:成功返回0,失败返回一个错误码

线程的同步互斥机制

引入目的

1.由于多个线程共用进程的资源,所有可以通过全局资源完成多个进程的之间消息的传递

2.临界资源:多个线程共同使用的全局资源称为临界资源

3.临界区:访问临界资源的代码段称为临界区

4.多个进程访问临界资源时,会产生相互抢占的现象,该线程称为竞态,为了防止竞态的产生,引入了同步互斥机制

5.互斥:同一时刻,只允许一个线程使用临界资源,其他线程处于等待状态,直到拥有临界资源的线程释放了临界资源的使用权,没有先后顺序

6.同步:多个线程有顺序的访问临界资源

互斥

1.互斥机制中引入了互斥锁

2.互斥锁的本质也是一个特殊的临界资源,当某个线程抢到该锁资源后,其他线程只能处于等待状态,直到该线程释放锁资源

3.对于互斥锁的操作分别为:创建互斥锁、获取锁资源、释放锁资源、销毁互斥锁

同步机制之无名信号量

1.同步:多个线程有顺序的执行

2.无名信号量:本质上也是一个临界资源,维护了一个value值,每个线程要执行时,先申请该value值,申请成功时,将value值减1,如果申请时,value值为0,则该线程在申请处阻塞,直到另一个线程将该无名信号量的value值增加到大于0.

3. 线程同步多用于生产者消费者模型:生生产者生产数据,消费者消费数据

作业

3.拷贝

4.ABC

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

指定linux文件夹下所有文件赋权命令“chmod -R 755”

仓库&#xff1a;Ai-trainee/GPT-Prompts-Hub 下面我们假设要为&#xff1a;/opt/robot/lib/robot_control/下所有子文件赋权 如果要为 robot_control 目录中的所有文件分配权限&#xff08;在 Linux 术语中也称为“更改文件权限”或“chmod”&#xff09;&#xff0c;则可以…

【从零开始学技术】Fiddler 抓取 https 请求大全

1.Fiddler代理浏览器设置 注意浏览器代理区别 Chrome/IE浏览器使用的都是系统代理设置 在chrome浏览器的设置中搜索代理&#xff0c;可以看到 打开IE浏览器&#xff0c;选择设置->Internet选项 Firefox浏览器使用的是单独的一套代理系统 在Firefox的代理设置中&#xff0c;我…

锂电池放电结束后电压回升,充电结束后电压下降

放电时&#xff0c;撤去负载&#xff0c;开路电压会上升&#xff1b;充电时&#xff0c;撤去电源&#xff0c;开路电压会下降。 一、极化 极化是指事物在一定条件下发生两极分化&#xff0c;使其性质相对于原来状态有所偏离的现象。 二、电化学极化 对于任何电化学体系中&am…

java注解学习

java注解 Annotation 为什么要学注解&#xff1f; 在日常开发中&#xff0c;基本都是在使用别人定义或是各种框架的注解&#xff0c;比如Spring框架中常用的一些注解&#xff1a;Controller、Service、RequestMapping&#xff0c;以此来实现某些功能&#xff0c;但是却不知道如…

玩转硬件之C51的玩法(二)——模拟按键模块

模拟按键模块是一种常见的电子元件&#xff0c;它具有简单、易用、可靠的特点&#xff0c;被广泛应用于各种电子设备中。它的工作原理是通过按下按钮&#xff0c;使开关接通或断开电路&#xff0c;从而实现控制电子设备的功能。 AD Keyboard模块可以适用Arduino和C51&#xff…

xss-labs(6-9)

level6:欢迎来到level6 老规矩还是先看看输入框的闭合情况 尝试事件函数绕过 test" onclick="alert(欢迎来钓鱼) 既然事件函数被转义了,那就使用我们第二关用过的绕过方法插入标签看看 test"><script>alert(欢迎来钓鱼)</script>// <

Excel:通过excel将表数据批量转换成SQL语句

这里有一张表《student》&#xff0c;里面有10条测试数据&#xff0c;现在将这10条测试数据自动生成 insert语句&#xff0c;去数据库 批量执行 P.S. 主要用到excel表格中的 CONCATENATE函数&#xff0c;将单元格里面的内容填入到sql里面对应的位置 1. 先写好一条insert语句&a…

定时器中断控制的独立式键盘扫描实验

#include<reg51.h> //包含51单片机寄存器定义的头文件 sbit S1P1^4; //将S1位定义为P1.4引脚 sbit S2P1^5; //将S2位定义为P1.5引脚 sbit S3P1^6; //将S3位定义为P1.6引脚 sbit S4P1^7; //将S4位定义为P1.7引脚 unsigned char keyval; /…

WPF 基础入门(资源字典)

资源字典 每个Resources属性存储着一个资源字典集合。如果希望在多个项目之间共享资源的话&#xff0c;就可以创建一个资源字典。资源字段是一个简单的XAML文档&#xff0c;该文档就是用于存储资源的&#xff0c;可以通过右键项目->添加资源字典的方式来添加一个资源字典文件…

如何实现在IDEA中远程访问家里或者公司的数据库远程协作开发

文章目录 1. 本地连接测试2. Windows安装Cpolar3. 配置Mysql公网地址4. IDEA远程连接Mysql小结 5. 固定连接公网地址6. 固定地址连接测试 IDEA作为Java开发最主力的工具&#xff0c;在开发过程中需要经常用到数据库&#xff0c;如Mysql数据库&#xff0c;但是在IDEA中只能连接本…

批量剪辑方法:掌握视频剪辑技巧,按指定时长轻松分割视频

在视频制作和编辑过程中&#xff0c;经常要批量处理和剪辑大量的视频片段。学会批量剪辑方法可以提高工作效率&#xff0c;还可以使视频编辑更加准确和高效。下面来看下云炫AI智剪如何按指定时长轻松分割视频的批量剪辑方法。 分割后的视频文件效果&#xff0c;已分割分段的视…

B端企业画像的数据获取和构建

什么是企业画像&#xff1f; 不管是企业画像还是C端用户画像&#xff0c;都需要展示两类属性&#xff1a; 企业本身的属性&#xff1b;依赖于客户和企业关系的画像&#xff0c;这部分属性就是我们在企业画像中要做的重要内容。 举个例子&#xff1a;某餐厅是A产品进货的客户…

python对常见的激活函数绘图操作(详细代码讲解)

写论文的时候需要做一些激活函数的图像&#xff0c;为此将常见的激活函数进行整理汇总了一下&#xff0c;方便后续的复习 激活函数的作用是为让模型处理非线性问题&#xff0c;故次激活函数都是非线性的 生活中&#xff0c;非线性问题占大多数&#xff0c;而模型的训练通常都是…

《亚太教育》是什么级别的期刊?是正规期刊吗?能评职称吗?

《亚太教育》主要发表教育理论研究、教育教学实践、学校管理、学科教育、科研管理等学术论文以及其他与教育教学相关的学术论文和研究成果,现征集教育管理以及各学科优秀论文。欢迎.各位教师、教育工作者及高校学生踊跃投稿。 收录情况&#xff1a;知网万方维普收录 投稿方式&a…

前端国际化之痛点(二):多包多库场景下联动多语言

前言 VoerkaI18n是一款非常优秀的前端国际化解决方案&#xff0c;其开发的出发点是为了解决现存多语言的一些痛点,接下来几篇文章将分别进行分析。 前端国际化之痛点(一)&#xff1a;让人头疼的词条Key前端国际化之痛点(二)&#xff1a;多包多库场景下联动多语言前端国际化之…

老杨说运维 | 年末大讲回顾:运维的尽头也是大模型吗?

哈喽~朋友们&#xff0c;这么快又见面啦。前阵子我们给CEO老杨安排了一场年末大讲&#xff0c;主要是跟大家聊聊智能运维的“智”与“能”以及剖析时下热点----运维大模型。后台收到了不少朋友的反馈&#xff0c;小编看了大受鼓舞并暗下决心----新的一年&#xff0c;希望能多安…

leetcode 每日一题 2024年01月09日 字符串中的额外字符

题目 字符串中的额外字符 给你一个下标从 0 开始的字符串 s 和一个单词字典 dictionary 。你需要将 s 分割成若干个 互不重叠 的子字符串&#xff0c;每个子字符串都在 dictionary 中出现过。s 中可能会有一些 额外的字符 不在任何子字符串中。 请你采取最优策略分割 s &…

浅谈对Promise的理解。

一、Promise定义 JS中用于处理异步操作的编程模式。一个Promise是一个代理&#xff0c;它代表一个创建Promise时不一定已知的值。它允许我们将处理的程序与异步操作的最终成功值或失败值原因想关联起来。这使得异步方法可以像同步方法一样返回值&#xff1a;异步方法不会立即返…

【深度学习】SDXL tensorRT 推理,Stable Diffusion 转onnx,转TensorRT

文章目录 sdxl 转 diffusers转onnx转TensorRT sdxl 转 diffusers def convert_sdxl_to_diffusers(pretrained_ckpt_path, output_diffusers_path):import osos.environ["HF_ENDPOINT"] "https://hf-mirror.com" # 设置 HF 镜像源&#xff08;国内用户使…

交叉编译ARM64架构electron详解

基本介绍 本文主要参考Electron官方文档中 构建说明 和 构建步骤(Linux) 在amd64环境内构建arm64的electron包。 如果是arm64环境请查看文章arm64架构编译electron长征路 一、环境说明 操作系统版本:统信1060 操作系统架构:amd64 内存:32G 如下图: electron版本:v25…