网络上有很多讨论关于在*NIX系统在SMP环境下到底是应该用多线程还是多进程, 到底哪一个有更好的性能, 比如有很多人认为考虑到linux使用1-1线程模型(对内核来说, 线程就是一个进程)并且系统已经为进程处理做了很多优化,效率提升, 所以在liunx SMP环境下, 多进程和多线程几乎有做一些的性能, 加上多线程得考虑locking,更加容易导致问题. 有人认为无论是创建还是切换, 线程肯定是要cheaper一些, 所以如果追求性能的话应该尽量使用多线程.
观点很多,从各个角度,很难说有绝对的真理, 以下的link是IBM团队分别在多核的Solaris 10系统和多核的 Red Hat Enterprise Linux 5.4系统上做的一系列不同场景的比较, 非常详细, 当你需要考虑在你的多核环境中使用何种方式时, 可以从以下分析中获得一些数据和启发.
An Old Question on New Platforms:
Threads vs. Processes: Which is better to achievehigher performance?
– Each process has own virtual memory space
#Using processes provides better inter-process isolation
– Threads in one process shares a virtual memory space
#Multi-thread processing is better for performance due toits memory efficiency (smaller footprint)ƒ
Is this answer still valid on today’s processors withmultiple cores and multiple SMT threads in a core?
Check the answer below form IBM analysis.
http://researcher.watson.ibm.com/researcher/files/jp-INOUEHRS/IISWC2010_inoue_slides.pdf