这类我总结了一些进程与线程的特点和选取方法,若有错误,不吝指正(^.^)
进程是资源分配的最小单位,线程是CPU调度的最小单位(基本概念啦)
数据同步与共享:(平分秋色)
进程共享复杂需要IPC,数据分开同步简单;
线程共享进程数据,共享简单,但因此同步复杂;
内存CPU:(线程占优)
进程占用内存多,切换复杂,CPU利用率低;
线程占用内存少,切换简单,CPU利用率高;
创建销毁和切换:(线程占优)
进程复杂且慢;
线程简单且块;
编程与调试:(进程占优)
进程编程与调试简单;
线程编程与调试复杂;
可靠性:(进程占优)
进程间不会影响;
线程dump整个进程dump;
分布式:(进程占优)
进程适应多核多机分布式,一个机子不够扩展到多台机器方便;
线程适应多核分布式;
优先情况:
线程优先频繁创建销毁,如Web服务器,一个连接建立一个线程,断开则销毁;
线程优先进行大量计算,如图像处理、算法处理,因为要消耗许多CPU,切换频繁;
线程优先强相关处理、线程优先弱相关处理,强相关是当一列变量变化时另一列变量变化的可能性非常大的关系(如供求与价格),弱相关相反。这并不是一成不变的,要按照实际情况调整;
线程优先多核分布,进程优先多机分布;
都满足时选择最熟悉且拿手的方式。
在周丽论文的实验中(博客上看的,大家可以搜到),任务量较大(此处是255线程/进程,输出文字到控制台和日志文件,打印1000次时时间开销进程小于线程,因为有线程栈)进程效率高;
线程的销毁开销确实小于进程(在10万个线程/进程的环境下,线程开销是进程的约13分之一,同样是周丽论文的实验中的数据),因此在有大量销毁的情况优先考虑线程。
可以改进的地方就评个论啦
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。