线程与进程
2011-08-19 16:08
204 查看
不久前看《The Art Of Unix Programming》。其中有一个小节叫做"Threads —Threat or Menace?"。其中作者从Uinx的开发传统,对多线程的开发模式提出了一些批评。主要是认为多线程带来了同步,死锁,调试困难以及性能等问题。这些确实是在多线程程序中经常遇到的一些问题,有些确实很困扰。但是,其实这些都是细节,其实作者通过这些批评,主要还是为了提倡Unix下一个进程只做一件事,并且做好一件事的思想。我觉得这是一种很好很重要并且很实用的软件工程思想。
看完这个章节不久,刚好有个开发项目,需要软件兼容不同的采集设备。对于数据采集,有两种做法。一种是针对每种设备开启一个独立线程来负责采集数据,另一种就是使用独立进程来采集数据,并使用UDP来向主程序回传采集数据。在兼容的设备数量比较多时,每个设备开启一个线程,并且进行相应的协议处理的话,这样就会导致程序规模比较庞大,而且一旦采集硬件出现一些故障,会导致主程序的崩溃,而第二种方式则不会,就算出现问题,也不会影响主程序的稳定性。此外,兼容不同设备的采集程序还可以由不同的人同时开发,提高开发效率,可以协作开发。
当然,多进程的方式也有缺点,就是需要针对IPC定义通信协议,这个可能也会比较麻烦。线程在很多情况下也是难以避免的,当然这个可以根据软件规模来灵活选择了。但是,Unix下一个进程只做一件事的思想确实可以为windows开发所用。其实,咱们大家都用的360杀毒软件,就有很多后台进程,可见其也是采用了这种思想。
看完这个章节不久,刚好有个开发项目,需要软件兼容不同的采集设备。对于数据采集,有两种做法。一种是针对每种设备开启一个独立线程来负责采集数据,另一种就是使用独立进程来采集数据,并使用UDP来向主程序回传采集数据。在兼容的设备数量比较多时,每个设备开启一个线程,并且进行相应的协议处理的话,这样就会导致程序规模比较庞大,而且一旦采集硬件出现一些故障,会导致主程序的崩溃,而第二种方式则不会,就算出现问题,也不会影响主程序的稳定性。此外,兼容不同设备的采集程序还可以由不同的人同时开发,提高开发效率,可以协作开发。
当然,多进程的方式也有缺点,就是需要针对IPC定义通信协议,这个可能也会比较麻烦。线程在很多情况下也是难以避免的,当然这个可以根据软件规模来灵活选择了。但是,Unix下一个进程只做一件事的思想确实可以为windows开发所用。其实,咱们大家都用的360杀毒软件,就有很多后台进程,可见其也是采用了这种思想。
相关文章推荐
- IOS中线程与进程的概念
- 关于程序,进程,线程。程序个人理解:应用程序是一个车间,进程是一条生产线,线程是机器
- 进程和线程
- 进程和线程的区别
- Java并发编程:线程和进程的创建(转)
- 面试中的 进程和线程的区别
- Linux进程与线程的区别
- Python 中的进程、线程、协程、同步、异步、回调
- python中的进程、线程(threading、multiprocessing、Queue、subprocess)
- 进程与线程的区别
- 转载--Python之路,进程、线程、协程篇(原文地址:http://www.cnblogs.com/alex3714/articles/5230609.html)
- Linux进程与线程的区别
- 【转】进程和线程
- 搭建一个服务器框架,进程间利用管道通信,线程处理数据
- Java获取当前进程的所有线程
- Linux上如何查看某个进程的线程
- objective-c -- 网络数据库 - 进程和线程--GCD
- 进程,线程与信息共享
- 线程,进程,线程同步,线程异步,相关概念学习——》总结
- linux中线程和进程的详解