LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 748|回复: 5

线程还是进程?

[复制链接]
发表于 2007-6-1 20:25:14 | 显示全部楼层 |阅读模式
很疑惑linux下编程到底是进程还是线程
有2种声音  一种认为线程明显比进程优化
另一种认为在linux下进程和线程基本上没有区别(从内核角度看确实如此 线程只是共享数据的进程) 虽然进程的上下文切换需要开销 但线程的同步的开销一样不可小视 而且linux下进程以及很轻 开销很小  而线程却连个标准都没有 移植性差  使用线程只是那些进程设计臃肿的系统的无奈之举

诸位意见如何  现实中又是怎样
发表于 2007-6-2 00:08:47 | 显示全部楼层
在嵌入式开发中你会遇到很多没有进程的操作系统,Realtime OS居多,从最初的Linux thread,到Posix thread,再到现在的NPTL,Linux的线程Model在一步一步发展。在Linux下,一个进程在Kernel Space还是以一个Thread存在着,进程只是一个资源Resource隔离的单位。写程序,就是要快快乐乐写自己和其他人方便使用的程序,对于到底是进程编程还是线程编程好,这种问题自己试一下不就知道了,不必要跟着固定的标准。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-2 00:20:10 | 显示全部楼层
就我写的小程序而言  使用线程和进程是差不多的  但我想知道就效率和性能而言到底哪个强一些 对于比较大的项目    rtos里面不是应该进程用的多一些么? 抱歉我不是很了解
回复 支持 反对

使用道具 举报

发表于 2007-6-2 09:39:46 | 显示全部楼层
如果只是从MUTEX对共享资源保护的效率上讲。
Linux2.6内核提供了FUTEX(意思是Fast Mutex),现在实现的NPTL采用了FUTEX,在以前,因为进程与线程在访问共享资源时会产生很多的上下文切换,而这种用户态内核态之间的切换是很消耗CPU指令的,所以老的MUTEX效率并不高,采用了FUTEX之后线程对共享资源的保护这块,大部分工作都不需要进行上下文切换。
显然,在这点上,线程效率要比进程高很多。
如果不看这点,进程采用了共享内存机制与子进程共享资源这种方式和线程相比,运行起来,确实是差不多的。
而在嵌入式来说,如果使用pthread还要连接pthread库,这样一来,footprint多了一些。有些不合理。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-2 14:23:01 | 显示全部楼层
光学进程极其ipc够用么? 现阶段实在懒得学线程。。。
回复 支持 反对

使用道具 举报

发表于 2007-6-2 19:18:38 | 显示全部楼层
RTOS里,我只接触过 i-Tron这个OS,里面没有进程的概念,所以我们所作的是用User-level thread, 现在是Multi-core的时代了, 也就是说,对资源的占用不象以前单CPU的那么紧张了,所以,Thread相比Process,效率要更高一点。毕竟Schedule thread比Schedule process,对Scheduler的要求要轻松的多。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表