这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 科普:线程与进程

共4条 1/1 1 跳转至

科普:线程与进程

高工
2013-09-25 14:49:26     打赏

  这么解释问题吧:

  单进程单线程:一个人在一个桌子上吃菜。

  单进程多线程:多个人在同一个桌子上一起吃菜。

  多进程单线程:多个人每个人在自己的桌子上吃菜。

  多线程的问题是多个人同时吃一道菜的时候容易发生争抢,例如两个人同时夹一个菜,一个人刚伸出筷子,结果伸到的时候已经被夹走菜了。。。此时就必须等一个人夹一口之后,在还给另外一个人夹菜,也就是说资源共享就会发生冲突争抢。

  对于 Windows 系统来说,【开桌子】的开销很大,因此 Windows 鼓励大家在一个桌子上吃菜。因此 Windows 多线程学习重点是要大量面对资源争抢与同步方面的问题。

  对于 Linux 系统来说,【开桌子】的开销很小,因此 Linux 鼓励大家尽量每个人都开自己的桌子吃菜。这带来新的问题是:坐在两张不同的桌子上,说话不方便。因此,Linux 下的学习重点大家要学习进程间通讯的方法。

  补充:有人对这个开桌子的开销很有兴趣。我把这个问题推广说开一下。

  开桌子的意思是指创建进程。开销这里主要指的是时间开销。

  可以做个实验:创建一个进程,在进程中往内存写若干数据,然后读出该数据,然后退出。此过程重复 1000 次,相当于创建/销毁进程 1000 次。在我机器上的测试结果是:

  UbuntuLinux:耗时 0.8 秒

  Windows7:耗时 79.8 秒

  两者开销大约相差一百倍。

  这意味着,在 Windows 中,进程创建的开销不容忽视。换句话说就是,Windows 编程中不建议你创建进程,如果你的程序架构需要大量创建进程,那么最好是切换到 Linux 系统。

  大量创建进程的典型例子有两个,一个是 gnu autotools 工具链,用于编译很多开源代码的,他们在 Windows 下编译速度会很慢,因此软件开发人员最好是避免使用 Windows。另一个是服务器,某些服务器框架依靠大量创建进程来干活,甚至是对每个用户请求就创建一个进程,这些服务器在 Windows 下运行的效率就会很差。这"可能"也是放眼全世界范围,Linux 服务器远远多于 Windows 服务器的原因。




关键词: 科普     线程     进程     桌子    

专家
2013-09-25 22:33:48     打赏
2楼
理解了   比喻的很形象贴切

高工
2013-09-25 22:46:43     打赏
3楼
经典的解释,学习了

高工
2013-09-26 09:34:47     打赏
4楼

看完之后,形象的理解了,不同的架构在不同的模式下各自具备优势。


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]