当前位置: 首页 > wzjs >正文

网站运营的含义是什么北京网站建设公司排名浩森宇特

网站运营的含义是什么,北京网站建设公司排名浩森宇特,网页建设与网站设计心德体会,网站建设与制作总结💓个人主页:mooridy 💓专栏地址:Linux 关注我🌹,和我一起学习更多计算机的知识! 🔝🔝🔝 什么是线程 程序中的一个执行路线就叫做线程 一个进程至少要有一个执行线程,单…

💓个人主页:mooridy
💓专栏地址:Linux
关注我🌹,和我一起学习更多计算机的知识!

🔝🔝🔝

什么是线程

程序中的一个执行路线就叫做线程

  • 一个进程至少要有一个执行线程,单个进程本身就是一个执行流,所以单个进程某种意义上也是一个线程(是主线程).线程在进程内部运行,本质是在进程地址空间内运行
  • 在Linux操作系统下,线程就是轻量化进程,线程是没有独立的地址空间的PCN结构,线程的资源是主线程共享给它们的。
    ![[Pasted image 20250325104542.png]]

线程的优点

• 线程的创建时间比进程快
因为进程在创建的过程中,还需要资源管理信息,比如内存管理信息、文件管理信息,而线程在创建的过程中,不会涉及这些资源管理信息,而是共享它们;

• 同一个进程内的线程切换比进程切换快
因为线程具有相同的地址空间(虚拟内存共享),这意味着同一个进程的线程都具有同一个页表,同一个虚拟地址空间,那么在切换的时候不需要切换页表。同时也不会扰乱处理器的缓存机制。
• 线程之间的数据交互效率更高
由于同一进程的各线程间共享内存和文件资源,那么在线程之间数据传递的时候,就不需要经过内核了;

线程异常

线程是进程的执⾏分⽀,线程出异常,就类似进程出异常,进⽽触发信号机制,会终⽌整个进程,该进程内的所有线程也就随即退出。

线程与进程的比较

进程资源分配的单位,线程CPU 调度的单位;
• 进程拥有一个完整的资源平台,而线程只独享必不可少的资源,如寄存器和栈、线程ID、信号屏蔽字、调度优先级

进程的多个线程共享

同⼀地址空间,因此Text SegmentData Segment都是共享的,如果定义⼀个函数,在各线程中都可以调⽤,如果定义⼀个全局变量,在各线程中都可以访问到,除此之外,各线程还共享以下进程资源和环境:
⽂件描述符表、每种信号的处理⽅式(SIG_ IGN、SIG_ DFL或者⾃定义的信号处理函数)、当前⼯作⽬录、用户id和组id

主线程的PID和LWP相同,CPU调度时是在看LWP,而不是PID,线程的PID和主线程相同,自己独有LWP

Linux线程控制

POSIX线程库

由于pthred是第三方库
所以编译时要加上-lpthread的字段

如何创建线程
功能:创建⼀个新的线程原型:int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);参数:thread:返回线程IDattr:设置线程的属性,attr为NULL表⽰使⽤默认属性start_routine:是个函数地址,线程启动后要执⾏的函数arg:传给线程启动函数的参数返回值:成功返回0;失败返回错误码
如何终止线程
  1. 从线程函数return。这种⽅法对主线程不适⽤,从main函数return相当于调⽤exit。(大多数情况)

  2. 线程可以调⽤pthread_ exit终⽌⾃⼰。

功能:线程终⽌
原型:void pthread_exit(void *value_ptr);参数:value_ptr: 指向退出状态的指针,可传递任意类型数据value_ptr不要指向⼀个局部变量。
返回值:⽆返回值,跟进程⼀样,线程结束的时候⽆法返回到它的调⽤者(⾃⾝)
  1. ⼀个线程可以调⽤pthread_ cancel终⽌同⼀进程中的另⼀个线程。
功能:取消⼀个执⾏中的线程原型:int pthread_cancel(pthread_t thread);参数:thread:线程ID返回值:成功返回0;失败返回错误码
如何进行线程等待
功能:等待线程结束原型int pthread_join(pthread_t thread, void **value_ptr);参数:thread:线程IDvalue_ptr:它指向⼀个指针,后者指向线程的返回值返回值:成功返回0;失败返回错误码

假如不进行线程等待,可能会出现类似于僵尸进程的问题

调⽤该函数的线程将挂起等待,直到id为thread的线程终⽌。

如何进行线程分离
  • 默认情况下,新创建的线程是joinable的,线程退出后,需要对其进⾏pthread_join操作,否则⽆法释放资源,从⽽造成系统泄漏。
  • 如果不关⼼线程的返回值,join是⼀种负担,这个时候,我们可以告诉系统,当线程退出时,⾃动释放线程资源。
int pthread_detach(pthread_t thread);

pthread_self()函数可以返回当前线程的线程ID,所以假设我们想要当前线程与主线程脱离关系,可以这样写: ```

pthread_detach(pthread_self());

线程ID本质

首先,pthread_create的返回值是线程ID.
线程ID的本质是一个地址,pthread库是一个动态库,是第三方库,这个库会被映射到进程的地址空间的共享区中,而线程ID所指的地址则是pthread这个库层面上,线程集合的起始地址
![[Pasted image 20250327113215.png]]

线程栈
  • 这种stack不能动态增⻓,⼀旦⽤尽就没了,这是和⽣成进程的fork不同的地⽅。
  • 对于⼦线程的 stack ,它其实是在进程的地址空间中map出来的⼀块内存区域,原则上是线程私有的,但是同⼀个进程的所有线程⽣成的时候,是会浅拷⻉⽣成者的 task_struct 的很多字段,如果愿意,其它线程也还是可以访问到的,于是⼀定要注意。
http://www.dtcms.com/wzjs/535882.html

相关文章:

  • 高清网站推广免费下载如何制作app的页面
  • 吴桥县做网站价格假如电脑的服务器关闭后做的网站还能打开吗
  • 工业设计公司如何选择sem优化专员
  • 唐山外贸网站建设哈尔滨个人建站模板
  • 直播网站 咋做我的营业执照网上查询
  • 专门做眼镜的网站东莞网站网络
  • 东莞公司官网建站长泰597人才网最新招聘信息
  • 成都网站建设高端刷单做任务的网站
  • 怎么查工程项目信息seo现在还有前景吗
  • 做网站用c语言可以吗西部数码网站助手
  • 普通网站一年要多少钱网站建设服务器租赁
  • 自己做的视频网站如何赚钱吗小企业网站建设哪些好办
  • 网站服务器搭建及配置的具体步骤成都微信小程序分类信息开发
  • 销售类网站开发架构沈阳创新网站建设报价
  • wordpress 留言板 插件常见的系统优化软件
  • 商务网站开发流程有三个阶段福田建设网站
  • 微网站开发平台广州建立网站的公司
  • 乐思网站建设wordpress 修改页面
  • 合肥做微网站建设网站建设与网页设计从入门到精通 素材下载
  • 全国加盟网站大全媒体发稿公司
  • 如何用visual做网站网站这么绑定到域名
  • 软件下载网站如何履行安全管理义务确保提供的软件wordpress主题 彩票
  • 网站维护英文个人交养老保险价格表
  • 网站建设预算表格个人申请公司流程
  • icp网站授权函手机免费个人网站建站
  • 优秀网站设计 pdf中国建设银行官方网站悦生活
  • php在线购物网站建设个人注册入口官网
  • 用phpmysql做网站wordpress 生成二维码
  • 个人网站建设详细教程无锡市建设银行总行网站
  • 如何做网站的营销西安网站制作开发