关于线程的实现

zhujisheng 2003-01-30 01:41:29
标准的PTHREAD在不同的UNIX下似乎采用不同的实现方式。有谁能详细说明和比较一下吗?

另外,在FREEBSD5.0内核中似乎增加了KSE的实现,那在FREE BSD5.0中的PTHREAD是否采用KSE实现?
...全文
24 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jarjarbinks 2003-02-08
  • 打赏
  • 举报
回复
SCO Open Server 下使用不稳定
AIX 可以
具体实现不知
checksum 2003-02-08
  • 打赏
  • 举报
回复
Linux使用进程+glibc Linux thread库实现,glibc pthread库调用clone()创建共享mem的进程,内核使用进程切换相同的策略来切换这些"thread"。即将推出的RH81将使用新的kernel&glibc,使部分以前由glibc做的thread管理工作转移到kernel中。我觉得最大的好处是通过proc file system接口只会看到一个process,不会象以前ps看到一大堆thread。但是此实现仍然只能做到1:1 thread模式。此库有个严重问题是在程序运行期间如果调用过setuid,将可能会导致程序出错,因为"thread"之间是通过kill互相发送信号来同步的,而"thread"之间并不共享同一个uid引用...
Linux下另外一个pthread库是IBM得NGPT,需要对kernel打非官方的patch,没有具体看,不过此实现使用M:N thread模式
FreeBSD只看过4.X的实现,具体是通过setjump, longjump进行"thread"调度,并且维护"thread"的一些数据结构(等待队列之类的),而且如果添加了编译pthread的参数的话,一些系统调用都会被pthread lib得包装函数替换,以便这些系统调用能够在需要block的时候切换到另外一个"thread"。这个实现的问题是不能充分利用多cpu的优势。
solaris的pthread lib是在solaris自身的thread库上包装的一个接口,具体没有看过,但是是所有见过的pthread库中最稳定,最符合标准的pthread库。
jsong1107 2003-02-05
  • 打赏
  • 举报
回复
wwwunix(木易), 不懂不要乱说.
wwwunix 2003-01-30
  • 打赏
  • 举报
回复
基本都是基于进程的方法实现的。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧