线程与进程

       不久前看《The Art Of Unix Programming》。其中有一个小节叫做"Threads —Threat or Menace?"。其中作者从Uinx的开发传统,对多线程的开发模式提出了一些批评。主要是认为多线程带来了同步,死锁,调试困难以及性能等问题。这些确实是在多线程程序中经常遇到的一些问题,有些确实很困扰。但是,其实这些都是细节,其实作者通过这些批评,主要还是为了提倡Unix下一个进程只做一件事,并且做好一件事的思想。我觉得这是一种很好很重要并且很实用的软件工程思想。


    看完这个章节不久,刚好有个开发项目,需要软件兼容不同的采集设备。对于数据采集,有两种做法。一种是针对每种设备开启一个独立线程来负责采集数据,另一种就是使用独立进程来采集数据,并使用UDP来向主程序回传采集数据。在兼容的设备数量比较多时,每个设备开启一个线程,并且进行相应的协议处理的话,这样就会导致程序规模比较庞大,而且一旦采集硬件出现一些故障,会导致主程序的崩溃,而第二种方式则不会,就算出现问题,也不会影响主程序的稳定性。此外,兼容不同设备的采集程序还可以由不同的人同时开发,提高开发效率,可以协作开发。

    当然,多进程的方式也有缺点,就是需要针对IPC定义通信协议,这个可能也会比较麻烦。线程在很多情况下也是难以避免的,当然这个可以根据软件规模来灵活选择了。但是,Unix下一个进程只做一件事的思想确实可以为windows开发所用。其实,咱们大家都用的360杀毒软件,就有很多后台进程,可见其也是采用了这种思想。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值