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

关于网站开发相关法律条款/零基础怎么做电商

关于网站开发相关法律条款,零基础怎么做电商,网站中的ppt链接怎么做,正规挣钱最快的游戏进程与线程 为什么对于大多数合作性任务,多线程比多个独立的进程更优越呢?这是因为,线程共享相同的内存空间。不同的线程可以存取内存中的同一个变量。所以,程序中的所有线程都可以读或写声明过的全局变量。如果曾用fork() 编写过…

进程与线程

        为什么对于大多数合作性任务,多线程比多个独立的进程更优越呢?这是因为,线程共享相同的内存空间。不同的线程可以存取内存中的同一个变量。所以,程序中的所有线程都可以读或写声明过的全局变量。如果曾用fork() 编写过重要代码,就会认识到这个工具的重要性。为什么呢?虽然fork() 允许创建多个进程,但它还会带来以下通信问题:如何让多个进程相互通信,这里每个进程都有各自独立的内存空间。对这个问题没有一个简单的答案。虽然有许多不同种类的本地IPC (进程间通信),但它们都遇到两个重要障碍:

  • 强加了某种形式的额外内核开销,从而降低性能。
  • 对于大多数情形,IPC不是对于代码的“自然”扩展。通常极大地增加了程序的复杂性。

        双重坏事: 开销和复杂性都非好事。如果曾经为了支持 IPC而对程序大动干戈过,那么您就会真正欣赏线程提供的简单共享内存机制。由于所有的线程都驻留在同一内存空间,POSIX线程无需进行开销大而复杂的长距离调用。只要利用简单的同步机制,程序中所有的线程都可以读取和修改已有的数据结构。而无需将数据经由文件描述符转储或挤入紧窄的共享内存空间。仅此一个原因,就足以让您考虑应该采用单进程/多线程模式而非多进程/单线程模式。

 

为什么要用线程?

        与标准 fork()相比,线程带来的开销很小。内核无需单独复制进程的内存空间或文件描述符等等。这就节省了大量的CPU时间,使得线程创建比新进程创建快上十到一百倍。因为这一点,可以大量使用线程而无需太过于担心带来的CPU 或内存不足。使用 fork() 时导致的大量 CPU占用也不复存在。这表示只要在程序中有意义,通常就可以创建线程。

        当然,和进程一样,线程将利用多CPU。如果软件是针对多处理器系统设计的,这就真的是一大特性(如果软件是开放源码,则最终可能在不少平台上运行)。特定类型线程程序(尤其是CPU密集型程序)的性能将随系统中处理器的数目几乎线性地提高。如果正在编写CPU非常密集型的程序,则绝对想设法在代码中使用多线程。一旦掌握了线程编码,无需使用繁琐的IPC和其它复杂的通信机制,就能够以全新和创造性的方法解决编码难题。所有这些特性配合在一起使得多线程编程更有趣、快速和灵活。

 

什么是线程?

  • 专业点的说法,线程被定义为一个独立的指令流,它本身的运转由操作系统来安排,但是,这意味着什么呢?
  • 对软件开发者来说,解释线程最好的描述就是“procedure”可以独立于主程序运行。
  • 再进一步,设想一个包含了大量procedure的主程序,然后想象所有这些procedure在操作系统的安排下一起或者独立的运行,这就是对于多线程程序的一个简单描述。
  • 问题是,它是如何实现的呢?
  • 在弄懂线程之前,第一步要搞清楚Unix进程。进程被操作系统创建,并需要相当多的“开支”,进程包含如下程序资源和程序执行状态信息:
  1. 进程ID,进程群组ID,用户ID,群组ID
  2. 环境
  3. 工作目录
  4. 程序指令
  5. 寄存器
  6. 文件描述符
  7. 信号动作
  8. 共享库
  9. 进程间通信工具(例如消息队列,管道,信号量,共享内存)

 

                                                   Unix进程                                                            Unix进程内部的线程

  • 线程使用和在进程内的生存,仍由操作系统来安排并且独立的实体来运行,很大程度上是因为它们为可执行代码的存在复制了刚刚好的基本资源。
  • 这个独立的控制流之所以可以实现,是因为线程维护着如下的东西:
  1. 栈指针
  2. 寄存器
  3. 调度属性(例如规则和优先级)
  4. 等待序列和阻塞信号
  5. 线程拥有的数据

 

  • 所以,总的来说,Unix环境里的线程有如下特点:
  1. 它生存在进程中,并使用进程资源;
  2. 拥有它自己独立的控制流,前提是只要它的父进程还存在,并且OS支持它;
  3. 它仅仅复制可以使它自己调度的必要的资源;
  4. 它可能会同其它与之同等独立的线程分享进程资源;
  5. 如果父进程死掉那么它也会死掉——或者类似的事情;
  6. 它是轻量级的,因为大部分的开支已经在它的进程创建时完成了。
  • 因为在同一进程内的线程分享资源,所以:
  1. 一个线程对共享的系统资源做出的改变(例如关闭一个文件)会被所有的其它线程看到;
  2. 指向同一地址的两个指针的数据是相同的;
  3. 对同一块内存进行读写操作是可行的,但需要程序员作明确的同步处理操作。
http://www.lbrq.cn/news/1410607.html

相关文章:

  • 苏州有哪些做网站公司好/企业建站流程
  • 加若格网站做么样/无锡百度推广代理公司
  • 网站焦点图怎么做链接/企业网站页面设计
  • 怎么做像知乎一样的网站/网站域名费一年多少钱
  • wordpress二级菜单代码/谷歌搜索优化seo
  • 深圳交易网站建设/网络营销产品
  • ppt图标网站链接怎么做/中国最大的企业培训公司
  • 东莞金融网站建设/最新今日头条
  • 织梦后台点击网站主页/搜索引擎优化涉及的内容
  • 公司网页制作哪家强/seo投放营销
  • 建网站内容/整站seo排名
  • 网站营销应该怎么做/搜索引擎营销的优缺点及案例
  • wordpress评论cdn刷新/汕头seo代理
  • 深圳网站建设 东毅虎/免费网络推广平台
  • 海南做网站的公司/网站网络推广公司
  • 网站开发 明细/seo效果最好的是
  • 深圳网站推广优化/个人网页在线制作
  • 临朐整站优化/网页百度网盘
  • 高唐网站建设服务商/win7运行速度提高90%
  • 做阅读任务挣钱的网站/app推广地推接单网
  • 网站ip改变 备案/网站seo优化建议
  • html全屏网站/百度浏览器下载安装2023版本
  • 网站pc端和手机端分离怎么做/网站seo推广营销
  • 云南微网站搭建费用/怎么搭建自己的网站
  • 网站建设未验收会计账务处理/成都网站推广公司
  • 网络搏彩网站做代理/快速排名精灵
  • 上海门户网站制作/百度市场应用官方app
  • 营销型网站建设合同范本/微博推广方式
  • 中科院网站做的好的院所/网站查询信息
  • 做网站运营需要学什么条件/自己做网站需要什么条件
  • 从哲学(业务)视角看待数据挖掘:从认知到实践的螺旋上升
  • Spark 运行流程核心组件(三)任务执行
  • Qt5基础控件详细讲解
  • 自由学习记录(85)
  • 在鸿蒙中实现深色/浅色模式切换:从原理到可运行 Demo
  • E2B是一个开源基础设施,允许您在云中安全隔离的沙盒中运行AI生成的代码和e2b.dev网站