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里面,进程与线程到底有什么本质的区别?

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

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

Sharktech:无限流量服务器丹佛,洛杉矶,荷兰$49/月起,1Gbps带宽哦!

鲨鱼机房(Sharktech)我们也叫它SK机房,是一家成立于2003年的老牌国外主机商,提供的产品包括独立服务器租用、VPS主机等,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹等,主打高防产品,独立服务器免费提供60Gbps/48Mpps攻击防御。机房提供1-10Gbps带宽不限流量服务器,最低丹佛/荷兰机房每月49美元起,洛杉矶机房最低59美元/月起。下面列出部分促销机型的配置信息。机房...

织梦DEDECMS即将授权收费和维权模式 站长应对的几个方法

这两天在站长群里看到不少有使用DEDECMS织梦程序的朋友比较着急,因为前两天有看到来自DEDECMS,我们熟悉的织梦程序官方发布的公告,将会在10月25日开始全面商业用途的使用DEDECMS内容管理程序的会采用授权收费模式,如果我们有在个人或者企业商业用途的,需要联系且得到授权才可以使用,否则后面会通过维权的方式。对于这个事情,我们可能有些站长经历过,比如字体、图片的版权。以及有一些国内的CMS...

盘点AoYoZhuJi傲游主机商8个数据中心常见方案及八折优惠

傲游主机商我们可能很多人并不陌生,实际上这个商家早年也就是个人主机商,传说是有几个个人投资创办的,不过能坚持到现在也算不错,毕竟有早年的用户积累正常情况上还是能延续的。如果是新服务商这几年确实不是特别容易,问到几个老牌的个人服务商很多都是早年的用户积累客户群。傲游主机目前有提供XEN和KVM架构的云服务器,不少还是亚洲CN2优化节点,目前数据中心包括中国香港、韩国、德国、荷兰和美国等多个地区的CN...

linux多线程为你推荐
php虚拟主机免费的国内的php虚拟主机有吗美国主机租用美国服务器租用整的这么便宜 啊网站域名注册有没有免费的域名申请中国互联网域名注册什么叫做网络域名 怎么注册网络域名 以及它的收费方式虚拟主机推荐谁可以给推荐下好用的虚拟主机vps试用请问有什么网站可以提供免费vps试用的?想用它来刷一下外国pt站网站空间域名关于网站的域名和空间?asp虚拟空间ASP空间是什么意思?手机网站空间手机登陆qq空间网址是什么?虚拟主机管理系统虚拟主机管理系统那一家好?
免费虚拟主机申请 解析域名 budgetvm 大硬盘 樊云 名片模板psd 服务器日志分析 上海域名 中国电信测速112 北京双线机房 100m空间 cdn加速原理 创建邮箱 免费的域名 免费网络空间 江苏双线 博客域名 windowsserver2012r2 cpu使用率过高怎么办 nic 更多