linux多线程linux里面,进程与线程到底有什么本质的区别?

linux多线程  时间:2020-12-27  阅读:()

LINUX下有没有线程概念,和WIN下线程概念有

一. 概念 ??首先Linux并不存在真正的线程,Linux的线程是使用进程模拟的。

当我们需要在一个进程中同时运行多个执行流时,我们并不可以开辟多个进程执行我们的操作(32位机器里每个进程认为它 独享 4G的内存资源),此时便引入了线程,例如当我们既需要下载内容,又需要浏览网页时,此时多线程便起了作用。

线程是承担调度的基本单位,一个进程可拥有多个线程,它的执行力度比进程更加细致,线程资源共享。

二. 特点 ??由于同一进程的多个线程共享同一地址空间,所以代码段,数据段是共享的,如果定义一个函数(存储在代码段),各线程都可以进行调用,如果定义个全局变量(存储在数据段),在各线程中都可以访问到,除此之外,各线程还共享以下进程资源和环境: 1.文件描述符表 2.每种信号的处理方式(SIG_IGN,SIG_DFL,用户自定义) 3.当前工作目录 4.用户id和组id 但有些资源是线程独享的: 1.线程id 2.上下文,包括各种寄存器的值,程序计数器和栈指针 3.栈空间 4.errno变量 5.信号屏蔽字 6.调度优先级

linux多线程间为什么要同步

我们先来看一下什么是多线程。

在Linux从程序到进程中,我们看到了一个程序在内存中的表示。

这个程序的整个运行过程中,只有一个控制权的存在。

当函数被调用的时候,该函数获得控制权,成为激活(active)函数,然后运行该函数中的指令。

与此同时,其它的函数处于离场状态,并不运行。

如下图所示:

Linux中为什么要使用多线程编程?

你好,多进程或多线程,都不会阻塞当前语句代码。

为了您的理解,我就大胆举下面两个例子:多进程:你可以看成是本来是一条路的,现在从中间拆成两条,然后每一条路都有属于自己这条路的代码在运行。

多线程:你可以看成是一条路,然后分出车道,比如左车道和右车道甚至是停车道,然后每条车道都单独通车,其他车道的不能对这条车道进行干扰。

所以,把一条路从中间拆成两条,成本是很高的。

但是把一条路分车道,成本就不是很高了。

对于您提出的main函数的疑问,当main函数最后执行完毕,程序退出后,所有的进程包括线程,都会被关闭的,哪怕你的程序中没有关闭,操作系统也会帮你关闭的,现在的操作系统都非常的完善了。

当然,也存在有线程或进程不被释放的特殊情况,最好在编程中要记得释放。

linux 编写一个多线程程序,要求主线程创建3个子线程,3个子线程在执行时都修改一个他们的共享变量。

这个要自己写判断, 线程退出的时候主动发出信号,或者设置个变量什么的,阻塞的方式可以用 pthread_join 或者 std::thread::join

麻烦解释一下linux下进程和线程有什么区别和联系,linux下多线程和多进程通信的实现方法,请通俗解释

兄弟看到你这么高的分我就找了些资料:也算是对昨天学的知识总结一下吧 一、先说概念不管是windows还是linux下的进程和线程概念都是一样的,只是管理进程和线程的方式不一样,这个是前提,到时候你可别问我windows下进程和线程啊。

这个涉及到操作系统原理。

下面给你解答。

说道进程不得不提作业这个名词 ,我想兄弟你电脑里不会有一个程序吧对不?当你的系统启动完毕后你看看你的任务管理器里是不是有很多进程呢?那么多程序是怎么调如内存呢?能理解吗?这里要明白程序和进程的关系,程序是你磁盘上的一个文件,当你需要它时进入内存后才成为进程,好比QQ在磁盘上就是一个文件而已,只有进入了内存才成为进程,进程是活动的。

QQ要扫描你文件啊,记录你聊天记录啊,偷偷上传个啥东西什么的你也不知道对不,他是活动的。

这个能明白吗? 再看作业,这个作业可不是你写作业的那个作业啊。

系统一看好家伙你个QQ那么大的家伙你想一下子进入内存啊?没门!慢慢来嘛,系统就把QQ程序分为好几块,这几块不能乱分的,要符合自然结构就是循环啦选择啦这样的结构,你把人家循环结构咔嚓截断了,怎么让人家QQ运行啊?这就是作业要一块一块的进入内存,同时要为作业产生JCB(JOB CONTROL BLOCK)作业控制块,你进入内存不能乱跑啊,要听系统的话,你要是进入系统自己的内存。

框一下,内存不能读写 对话框就出来了,严重点直接蓝脸给你!你懂得。

这是window下的,linux下直接给你报错!没事了就!所一系统通过jcb控制进程。

JCB包含了进程号优先级好多内容,你打开你的windows任务管理器看看进程是不是有好多属性啊?那就是PCB(PRCESS,CONTROL BLOCK)同理作业也包含那些内容只是多少而已。

下面写出进程特点: 1、进程是分配计算机资源最小的单位。

你想啊人是要用程序干活的吧?你把程序调入内存成了就成了进程,所以说进程是分配资源的最小单位。

你在linux下打开终端输命令看是不是有好多进程? 2、进程有操作系统为作业产生。

有“父进程”产生“子进程”之间是父子关系,并可以继续向下产生“子进程”。

还拿QQ来说,你双击QQ.exe。

QQ启动了输入账号密码打开主界面了。

这时候你要聊天,QQ进程赶紧产生个“儿子”说 “儿子你去陪主人聊天去吧。

这样子进程产生了。

突然你想看美女要传照片这时候那个”儿子“有”生“了一个”儿子“说”儿子“你去传照片。

那个“儿子领到任务去传照片了。

这时你想关了QQ,QQ提示你说”你还有个“儿子”和“孙子”还在干活呢你真要结束吗?你蒽了确定。

QQ对他“儿子”(你聊天窗口)说:”儿子啊对不起了,主人要关闭我你也不能活啊“咔嚓一下”儿子“死了,儿子死之前对他儿子说:“儿子啊你爷爷不让我活了,你也别活了咔嚓孙子也死了。

最后世界安静了。

这就是进程的父子关系。

能明白吗?记住:进程之活动在内存中。

不能使用CPU,只管分配资源。

再说线程:线程也产生在内存中并且在内存中存在相当长的时间,但它的活动区域主要在CPU中,并且运行和灭亡都存在于CPU中,可以这么说,线程是程序中能被系统调度进入CPU中最小程序单位,它能直接使用进程分配的CPU的资源。

还拿QQ来说当你要传文件时QQ总要判断一下文件的扩展名吧,ok这时那个”儿子“赶紧对它爸爸说我需要一个线程判断扩展名QQ赶紧对一个管这个的线程说:”快点去CPU里计算下那个扩展名是什么然后向主人报告计算完了就“死了”消亡了,但是它的线程还在内存中!还等着你下一次传文件然后计算然后消亡! 线程之间是相互独立的。

一个在CPU,一个在内存里还能有关系吗对不?CPU在每一个瞬间只能进入一个线程,当线程进入CPU时立即产生一个新的线程,新线程仍停留在内存中,就好比上面那个传文件还会等着你再传文件再计算扩展名。

线程相对线程是独立的,但它在内存中并不是独立的,这就好比你不开QQ能用QQ传输文件吗?它只存在与进程分配的资源中,也就是说计算扩展名这个线程只能停留在QQ这个进程中,不能跑到别的进程里!!相当于程序产生了新的进程和线程,进程向CPU申请资源,再有线程来使用,他们都是为程序服务的只是分工不同! 因为你没提问linux下是怎么管理进程和线程的所以我就不回答了,这个问题我建议你还是看看《笨兔兔的故事》里面讲到了linux是怎么管理进程和线程的。

挺幽默的比我说得还好。

你第二个问题说实话我回答不了你!我想你现在连进程和线程还没理解第二个你更理解不了了你说对不?我猜的其实你用C/C++不管是在windows下编程还是在Linux下编程思想都是一样的对吧,如果你理解了在windows下线程间通信,在linux更没问题了! 参考资料:黑客手册2009合订本非安全第一二季244页,245页,328页,329页,398页,399页 浅谈操作系统原理 (一 二三) ubuntu中文论坛 笨兔兔的故事 /ic.php?f=120&t=267518 希望我的回答你能理解

linux里面,进程与线程到底有什么本质的区别?

在多进程情况下,每个进程都有自己的独立空间,而多线程情况下,同一进程内的线程共享进程的空间地址。

因此,创建一个新的进程时就要耗费时间来为其分配系统资源,而创建一个新的线程花费的时间要少的多 在系统调度方面,由于进程地址空间独立而线程共享地址空间,线程间的切换速度要远远快于进程间的切换 在通信机制方面,进程间数据相互独立,彼此间通信要以专门的通信方式进行,通信时必须经过操作系统,而线程是数据共享的。

RAKsmart秒杀服务器$30/月,洛杉矶/圣何塞/香港/日本站群特价

RAKsmart发布了9月份优惠促销活动,从9月1日~9月30日期间,爆款美国服务器每日限量抢购最低$30.62-$46/月起,洛杉矶/圣何塞/香港/日本站群大量补货特价销售,美国1-10Gbps大带宽不限流量服务器低价热卖等。RAKsmart是一家华人运营的国外主机商,提供的产品包括独立服务器租用和VPS等,可选数据中心包括美国加州圣何塞、洛杉矶、中国香港、韩国、日本、荷兰等国家和地区数据中心(...

DMIT:新推出美国cn2 gia线路高性能 AMD EPYC/不限流量VPS(Premium Unmetered)$179.99/月起

DMIT,最近动作频繁,前几天刚刚上架了日本lite版VPS,正在酝酿上线日本高级网络VPS,又差不多在同一时间推出了美国cn2 gia线路不限流量的美国云服务器,不过价格太过昂贵。丐版只有30M带宽,月付179.99 美元 !!目前美国云服务器已经有个4个套餐,分别是,Premium(cn2 gia线路)、Lite(普通直连)、Premium Secure(带高防的cn2 gia线路),Prem...

特网云(1050元),IP数5 个可用 IP (/29) ,美国高防御服务器 无视攻击

特网云特网云为您提供高速、稳定、安全、弹性的云计算服务计算、存储、监控、安全,完善的云产品满足您的一切所需,深耕云计算领域10余年;我们拥有前沿的核心技术,始终致力于为政府机构、企业组织和个人开发者提供稳定、安全、可靠、高性价比的云计算产品与服务。官方网站:https://www.56dr.com/ 10年老品牌 值得信赖 有需要的请联系======================特网云美国高防御...

linux多线程为你推荐
linux虚拟主机windows虚拟主机和linux虚拟主机有什么区别租服务器租服务器是什么意思?中国域名注册中国十大域名注册服务商有哪些?云服务器租用云服务器租用费用是多少免备案虚拟空间备案退两次了。哪里有免备案空间虚拟主机用?100m网站空间网站空间100M指多大北京网站空间网站空间哪里的好,网站空间免备案免备案网站空间哪个好万网虚拟主机万网云虚拟主机怎么用,如何配置长沙虚拟主机长沙IDC,求长沙本地虚拟主机,大伙推荐推荐
3322免费域名 金万维动态域名 冰山互联 t牌 kddi 国外空间服务商 godaddy优惠券 国外空间 镇江联通宽带 ibrs 北京双线机房 国外免费全能空间 中国电信测网速 秒杀汇 yundun 独立主机 广州虚拟主机 免费稳定空间 上海联通 贵州电信 更多