进程与线程之线程

首先exec函数族是进程中的常用函数,可以利用另外的进程空间执行不同的程序,在之前的fork创建子进程中会完全复制代码数据段等,而exec函数族则可以实现子进程实现不同的代码


    int execl(const char *path, const char *arg, ...
                    /* (char  *) NULL */);
    int execlp(const char *file, const char *arg, ...
                    /* (char  *) NULL */);
    int execle(const char *path, const char *arg, ...
                    /*, (char *) NULL, char * const envp[] */);
    int execv(const char *path, char *const argv[]);
    int execvp(const char *file, char *const argv[]);
    int execvpe(const char *file, char *const argv[],
                    char *const envp[]);

    功能:
        利用进程空间执行另外一份代码
    
    l:参数以列表形式传递
    v:参数以指针数组形式传递
    e:更新环境变量
    p:在系统指定目录下查找文件

 getenv
    char *getenv(const char *name);
    功能:
        获得环境变量名对应的值
    
    setenv
    int setenv(const char *name, const char *value, int overwrite);
    功能:
        设置环境变量的值
    参数:
        name:环境变量名
        value:环境变量的值
        overwrite:非0 覆盖
                  0   不覆盖
    返回值:
        成功返回0 
        失败返回-1 

 1.基本概念:
        线程:线程是一个轻量级的进程,位于进程空间内部,一个进程中可以创建多个线程

    2.线程创建:
        线程独占栈空间,文本段、数据段和堆区与进程共享
    
    3.线程调度:
        与进程调度是一样的
        宏观并行,微观串行
    
    4.线程消亡:
        与进程消亡是一样的

5.进程和线程的区别:
        进程是操作系统资源分配的最小单元
        线程是CPU任务调度的最小单元

    6.多进程和多线程的优缺点:
        效率:多线程 > 多进程 
             多线程只需在同一进程空间内切换
             多进程需要在不同的空间中切换
        
        通信:多线程 > 有进程
            线程共享全局变量,可以通过全局变量实现数据通信
            进程空间是独立的,没有共享空间,通信实现比较复杂

        通信实现:多进程 > 多线程
            线程共享空间操作时会引发资源竞争
            进程没有共享空间,不存在资源竞争的问题
        
        安全:多进程 > 多线程
            一个进程异常不会影响其余进程空间
            一个线程异常结束会导致进程异常结束,进程异常结束,该进程内所有线程任务均无法向下执行

  7.线程相关的函数接口:
        创建: fork      pthread_create 
        退出: exit      pthread_exit 
        回收: wait      pthread_join 
 

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

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

相关文章

视频会议参会成员入会时无规律掉线解决方案:奇安信防火墙关闭ALG(反向代理)

【问题描述】 单位组织视频会议,出现很严重的问题是参会人员不能全部入会,多家单位依次都出现这种现象,无法入会的单位不固定。 【问题原因】 抓包查询到上级单位的奇安信防火墙出现了问题。 H323协议和SIP协议的视频流数据包经过防火墙以后…

Jeecg项目部署

说明:Jeecg是一款低代码开发平台,简单说是一款现成的项目,该项目集成了许多功能,我们可以在这个项目之上开发自己的业务代码。 本文介绍Jeecg项目的部署,包括后端jeecg-boot项目、前端vue3项目。前端项目在本地Window…

什么是上网行为审计软件?上网行为审计系统都有什么功能?

上网行为审计软件是指对网络进行监控和管理的一种软件,可以对员工或学生的上网行为进行记录、审计和分析,以便更好地管理网络资源,提高网络安全性和效率。 上网行为审计软件可以帮助企业或学校实现以下功能: 1. 监控上网行为 可…

SSM框架学习笔记07 | Spring MVC入门

文章目录 1. HTTP协议2. Spring MVC2.1. 三层架构2.2. MVC(解决表现层的问题)2.3. 核心组件 3. Thymeleaf3.1. 模板引擎3.2. Thymeleaf3.3. 常用语法 代码 1. HTTP协议 网址:https://www.ietf.org/ (官网网址) https:…

Vue-Cropper头像裁剪插件使用

1. 效果预览 2. 插件介绍 官网地址:[GitHub - xyxiao001/vue-cropper: A simple picture clipping plugin for vue](https://github.com/xyxiao001/vue-cropper?fromthosefree.com) 3 . 插件使用 下载插件 npm install vue-croppernext3 . 封装好的代码&#x…

软件实际应用实例,茶楼收银软件管理系统操作流程,茶室计时计费会员管理系统软件试用版教程

软件实际应用实例,茶楼收银软件管理系统操作流程,茶室计时计费会员管理系统软件试用版教程 一、前言 以下软件以 佳易王茶社计时计费管理系统软件V17.9为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、计时计费&…

Nest.js权限管理系统开发(六)新建模块

本文相关文档:NestJS 中文网 创建模块 nest g命令 我们知道一个模块往往包含controller、module、service等文件,为了方便我们创建这些文件,nest cli提供了一些命令: 生成模块 (nest g mo) 以保持代码井井有条并建立清晰的边界…

阿里巴巴Java开发手册解读-黄山版1.7.1

《Java 开发手册》是 Java 社区爱好者的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,整理成册后,众多社区开发者踊跃参与打磨完善,系统化地整理成册,当前的最新版本是黄山版。现代软件行业的高速…

Elasticsearch 创建index库 timeout

问题概述 使用 python 客户端 代码进行创建,【之前成功创建,但是现在出现报错,报错代码es_connection.client.indices.create】 def create_vector_index(dataset_index_name,vector_query_field,query_field):es_connection get_collentio…

【前沿热点视觉算法】-面向显著目标检测的注意区域空间金字塔池网络

计算机视觉算法分享。问题或建议,请文章私信或者文章末尾扫码加微信留言。 1 论文题目 面向显著目标检测的注意区域空间金字塔池网络 2 论文摘要 显著目标检测(SOD)的最新进展主要依赖于空间空间金字塔池(ASPP)模块…

java基于微信云开发的智慧校园综合服务(含资讯浏览、场地预约、报修申请、审核管理等功能)微信小程序

java基于微信云开发的智慧校园综合服务(含资讯浏览、场地预约、报修申请、审核管理等功能)微信小程序 一、演示效果二、流程步骤三、下载链接 一、演示效果 二、流程步骤 1、使用微信小程序官方开发工具导入本项目并开通云开发以及内容管理服务。 2、修…

JANGOW: 1.0.1

kali:192.168.223.128 主机发现 nmap -sP 192.168.223.0/24 端口扫描 nmap -p- 192.168.223.154 开启了21 80端口 web看一下,有个busque.php参数是buscar,但是不知道输入什么,尝试文件包含失败 扫描目录 dirsearch -u http://192.168.223.154 dirse…

Unity中URP下实现水体(水面高光)

文章目录 前言一、实现高光反射原理1、原理:2、公式: 二、实现1、定义 _SpecularColor 作为高光反射的颜色2、定义 _SpecularIntensity 作为反射系数,控制高光反射的强度3、定义 _Smoothness 作为高光指数,用于模型高光范围4、模拟…

python3GUI--酷狗音乐By:PyQt5(附下载地址)

文章目录 一.前言二.展示1.主界面2.乐库3.歌单3.频道4.视频5.我的频道6.视频7.听书8.探索9.其他细节1.搜索中间页2.主菜单3.歌单详情4.托盘菜单 三.心得四.总结 一.前言 之前仿作了几款音乐播放器,有的有功…

使用Scrapy将数据提取到数据库中,进行处理

我们将数据处理的方式,最开始csv文件 再到与数据库建立联系 代码: Spider: import scrapyclass ShuangseqiuSpider(scrapy.Spider):name "shuangseqiu"allowed_domains ["sina.com.cn"]start_urls ["https://view.lottery…

PyTorch深度学习入门与实战

《PyTorch 深度学习入门与实战(案例视频精讲)》是基于PyTorch 的深度学习入门和实战,结合实际的深度学习案例,由浅入深地介绍PyTorch 在计算机视觉和自然语言处理的相关应用。本书在内容上循序渐进,先介绍了PyTorch 的…

2/26作业

1.link_stack.c #include "link_stack.h" //申请栈顶指针 top_p creat_top() { top_p top (top_p)malloc(sizeof(top_t)); if(topNULL) { printf("空间申请不成功\n"); return NULL; } top->len 0; top->…

Java计划线程池ScheduledThreadPoolExecutor运行流程和源码分析

1. 计划线程池ScheduledThreadPoolExecutor简介 ScheduledThreadPoolExecutor继承自线程池ThreadPoolExecutor,并在其基础上增加了按时间调度执行任务的功能,如果对ThreadPoolExecutor还不是很熟悉,可以阅读一下这篇文章: Java线…

windows安装onlyoffice8.0

安装erlang 安装Erlang25.3 下载地址 设置环境变量 ERLANG_HOME C:\Program Files\Erlang OTP Path下设置%ERLANG_HOME%\bin 打开cmd输入erl不报错即可 安装rabbitmq rabbitmq和erlang对应的关系 下载地址 执行完exe文件后,找到安装目录下的sbin&am…

【JS逆向学习】马蜂窝 cookie 加密(加速乐)

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未…