至少在linux上,多THREAD程序和多进程程序,对于能不用THREAD的要尽量不用。
拿我说的例子:CLIENT数目有最大数值的(不是越多越好的),连接时间比较长的这一类服务,
用多THREAD几乎没有什么意义。
THREAD的优势是创建开始运行比进程快些(pthread_create比fork), 一旦运行起来,进程的切换和thread的切换差别没有什么。调度也都按进程做的。
THREAD因为共享了内存使得物理内存节省。然而进程本身也有共享的物理页(比如共享库部分)。
还有一开始用多THREAD在那里等着(池)。对于连接数量小并且固定的服务意义不大。
正是因为共享内存,使得多THREAD程序的调试麻烦,运行稳定性不如进程。
所以我建议,能不用THREAD尽量不用。如果必须用,也可以先不用--用进程,等都调试好了后在改THREAD。也不晚。
拿我说的例子:CLIENT数目有最大数值的(不是越多越好的),连接时间比较长的这一类服务,
用多THREAD几乎没有什么意义。
THREAD的优势是创建开始运行比进程快些(pthread_create比fork), 一旦运行起来,进程的切换和thread的切换差别没有什么。调度也都按进程做的。
THREAD因为共享了内存使得物理内存节省。然而进程本身也有共享的物理页(比如共享库部分)。
还有一开始用多THREAD在那里等着(池)。对于连接数量小并且固定的服务意义不大。
正是因为共享内存,使得多THREAD程序的调试麻烦,运行稳定性不如进程。
所以我建议,能不用THREAD尽量不用。如果必须用,也可以先不用--用进程,等都调试好了后在改THREAD。也不晚。