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

聊城手机网站建设软件那种网站后台最好

聊城手机网站建设软件,那种网站后台最好,湖南平台网站建设企业,石家庄做网站网络公司1.什么是线程 相对于进程而言#xff0c;进程是承担资源调度的实体#xff0c;线程在进程内部运行#xff0c;是操作系统调度的基本单位。 在一个程序里的一个执行路线就叫做线程#xff08;thread#xff09;。更准确的定义是#xff1a;线程是“一个进程内部的控制序列…1.什么是线程 相对于进程而言进程是承担资源调度的实体线程在进程内部运行是操作系统调度的基本单位。 在一个程序里的一个执行路线就叫做线程thread。更准确的定义是线程是“一个进程内部的控制序列。 一切进程至少都有一个执行线程。 线程在进程内部运行本质是在进程地址空间内运行。 在Linux系统中在CPU眼中看到的PCB都要比传统的进程更加轻量化。 透过进程虚拟地址空间可以看到进程的大部分资源将进程资源合理分配给每个执行流就形成了线程执行流。 从上图中可以说明cpu在调度的时候是不知道它调度的是线程还是进程的。 如果我们在创建“进程”时只创建task_struct并要求创建出来的task_struct和父task_struct共享进程地址空间和页表那么创建的结果就是上面这样的。 现在创建的进程不再给你独立分配地址空间和页表而是都指向同一块地址空间共享同一块页表。所以这四个task_struct看到的资源都是一样的我们后续可以通过某种方式把代码区拆分成4块让这四个task_struct执行不同的代码区域上述的区域数据区堆区栈区也是类似处理方式。换言之我们后续创建的3个task_struct都各自有自己的一小份代码和数据我们把这样的一份task_struct称之为线程。对于Linux下的进程来说Linux其实并没有真正的对线程创建对应的数据结构。 因此         线程本身是在进程内部运行的操作系统中存在大量的进程一个进程内又存在一个或多个线程因此线程的数量一定比进程的数量多线程 进程 一定是n : 1当线程的数量足够多的时候很明显线程的执行粒度要比进程更细。         对于这么多的线程我们OS需要对其做管理先描述再组织在大部分的OS中线程都有一个tcb。如果我们的系统实现的是真线程比如说windows平台它就要分别对进程和线程设计各自的描述的数据块结构体并且很多线程在一个进程内部所以还要维护线程tcb和进程pcb之间的关系。所以这样写出的代码其tcb和pcb两个数据结构之间的耦合度非常复杂。设计tcb和pcb的人认为这样的进程和线程在执行流层面上是不一样的。但是Linux不这样想在概念上没有进程和线程的区分只有一个叫做执行流。Linux的线程是用进程PCB模拟的。所以在Linux当中其PCB和TCB是一回事 Linux的线程用进程PCB模拟的好处很明显 不用单独设计tcb了Linux认为tcb和pcb的属性上很大部分重叠了不需要单独设计pcb)。不用维护tcb和pcb之间的关系了。不用在编写任何调度算法了。 线程的优点 创建一个新线程的代价要比创建一个新进程小得多与进程之间的切换相比线程之间的切换需要操作系统做的工作要少很多线程占用的资源要比进程少很多能充分利用多处理器的可并行数量在等待慢速I/O操作结束的同时程序可执行其他的计算任务计算密集型应用为了能在多处理器系统上运行将计算分解到多个线程中实现I/O密集型应用为了提高性能将I/O操作重叠。线程可以同时等待不同的I/O操作   线程的缺点 性能损失         一个很少被外部事件阻塞的计算密集型线程往往无法与共它线程共享同一个处理器。如果计算密集型线程的数量比可用的处理器多那么可能会有较大的性能损失这里的性能损失指的是增加了额外的同步和调度开销而可用的资源不变。 健壮性降低         编写多线程需要更全面更深入的考虑在一个多线程程序里因时间分配上的细微偏差或者因共享了不该共享的变量而造成不良影响的可能性是很大的换句话说线程之间是缺乏保护的。 缺乏访问控制         进程是访问控制的基本粒度在一个线程中调用某些OS函数会对整个进程造成影响。 编程难度提高编写与调试一个多线程程序比单线程程序困难得多。 一个进程内部一定存在多个执行流问这些执行流在CPU的角度有区别吗 答案是没有任何区别CPU调度的时候照样以task_struct为单位来进行调度这里只是task_struct背后的代码和页表只是曾经的代码和页表的一小部分而已。所以CPU执行的只是一小块代码和数据但并不妨碍CPU执行其它执行流。所以我们就可以把原本串行的所有代码而转变成并发或并行的让这些代码在同一时间点得以推进。总结如下以前CPU看到的所有的task_struct都是一个进程现在CPU看到的所有的task_struct都是一个执行流线程 Linux下进程再理解 有了这些知识后我们对线程的认识也发生了改变之前的理解是进程操作系统所对应的代码和数据结构和进程本身所对应的代码和数据结构。 现在的理解 现在的进程站在内核角度上看就是承担分配系统资源的基本实体进程的基座属性。所有进程最大的意义是向系统申请资源的基本单位。因此所谓的进程并不是通过task_struct来衡量的除了task_struct之外一个进程还要有进程地址空间、文件、信号等等合起来称之为一个进程。换言之当我们创建进程时是创建一个task_struct、创建地址空间、维护页表然后在物理内存当中开辟空间、构建映射打开进程默认打开的相关文件、注册信号对应的处理方案等等。 所以在Linux系统下Linux是没有真正的线程的只是通过将进程通过封装模拟出的一个线程所以在Linux下的PCB结构体中是小于等于其他平台的PCB的概念。 线程是操作系统调度的基本单位。 Linux下没有真正意义上的线程那么也就绝对没有真正意义上的线程相关的系统调用。这很好理解既然在Linux中都没有真正意义上的线程了那么自然也没有真正意义上的线程相关的系统调用了。但是Linux可以提供创建轻量级进程的接口也就是创建进程共享空间。 2.进程控制 原生线程库pthread 在Linux系统中是没有原生的线程库的因此系统为用户层提供了原生线程库pthread。 pthread库 原生线程库实际就是对轻量级进程的系统调用进行了封装在用户层模拟实现了一套线程相关的接口。因此对于我们来讲在Linux下学习线程实际上就是学习在用户层模拟实现的这一套接口而并非操作系统的接口。 下面来看下线程库提供的函数接口 创建线程pthread_creater() #include pthread.h int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 参数pthread_t 线程地址attr用于创建现成的属性通常为NULLvoid* 为回调函数为创建线程的实现方法args为传给现成的参数。 返回值成功返回0失败返回error 注意Linux不能真正意义上的帮我们提供线程的接口但是Linux有原生线程库使用此函数必须在编译时带上 -pthread 选项。 获取线程IPpthread_self 没有参数 返回值成功返回线程地址失败返回error. 线程等待pthread_join() #include pthread.h pthread_join(pthread_t thread,void** retval) 参数thread 线程id名,线程返回值通常为空。 返回值成功返回0错误返回error 线程终止pthread_exit() #include pthread.h pthread_exit(void*retval); 参数返回值 返回值成功退出当前线程失败返回error 线程取消pthread_cancel() #include pthread.h pthread_cancel(pthread_t thread); 参数被取消线程id。 返回值成功取消线程返回值为0错误返回error
http://www.zqtcl.cn/news/278708/

相关文章:

  • 怎样创作网站公司做网站 要准备哪些素材
  • 网站上的平面海报怎么做南阳企业做网站
  • 佛山公众平台网站推广多少钱wordpress如何调用分类目录
  • 网站推广应该注意什么信息发布平台推广
  • 官方网站案例做网站私活在哪接
  • 做网站滨州wordpress 不同域名
  • 找人做设计的网站广州做网站(信科网络)
  • 如何选择网站做站方向青之峰网站建设
  • 福州哪家网站制作设计高端还实惠设计logo的理念
  • 吉林市网站建设促销式软文案例
  • 三门峡市建设局网站网站开发费用是否资本化
  • 建设部网站官网 施工许可杭州萧山网站开发
  • 福建省建设资格注册管理中心网站竹子建站怎么样
  • 想做一个什么样的网站网站建设功能评价指标
  • 网站建设渠道合作友情链接是免费的吗
  • wordpress如何制作网站网站建设及推广方案ppt
  • 关于建设门户网站的通知重庆刮刮卡制作
  • 网站建设和维护工作内容凡科网免费建站步骤及视频
  • 如何用c 做网站最新疫苗接种最新消息
  • 营销型网站建设报价wordpress 注册 登录界面
  • 网站编辑器哪个好黄骅网站建设价格
  • 爱站工具包官网下载国外cdn
  • 郑州便宜网站建设做网站横幅的图片多大
  • 网站建设的未来wordpress防黑客插件
  • 个人备案网站可以做支付吗做娱乐新闻的网站有哪些
  • 国家建设部网站网站导航如何做半透明
  • 长治网站设计制作网站网站是用什么软件做的
  • wordpress成长记录网站模版市场推广方案ppt
  • 外贸网站建设560wordpress 在线音乐播放器
  • 大连哪里有手机自适应网站建设维护交互式网站开发技术asp