LinuxSir.cn,穿越时空的Linuxsir!

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

如何设计线程池?

[复制链接]
发表于 2003-9-17 15:53:46 | 显示全部楼层 |阅读模式
我记得Linux下线程不是完全兼容POSIX,也是lwp的思想。不知记错没有?
如果要设计一个线程池,应该怎么思考?如何设计?如何实现?
欢迎指导。
发表于 2003-9-17 17:38:57 | 显示全部楼层
lwp主要就是内核实现一个任务队列

只有在这个任务队列中的才可以运行
比较可以看看跟SOLARIS的比较

我以前转过放在这里

在SOLARIS里
可以控制线程的并发度
因为每个线程与内核中调度线程分开
操作系统只执行内核调度线程

不执行所有线程

LINUX是执行所有线程
兼容方面我觉得不会有问题

线程池在STEVENS的UNIX网络编程中也有写过例子
你可以看看
 楼主| 发表于 2003-9-17 20:06:41 | 显示全部楼层
能给个网址让我看看线程池的例子吗?谢谢。
发表于 2003-9-17 22:20:28 | 显示全部楼层
在他的书上有

或是你找找看吧
apache的设计中也使用了线程池的
发表于 2003-9-17 22:45:48 | 显示全部楼层
一个设计

主线程
DOWN NULL
PUT
UP FULL

线程组中一个线程
WHILE 1
DOWN ULL
LOCK  MUTEX
GET VALUE
ULOCK MUTEX
UP NULL
DO SOMETHING
 楼主| 发表于 2003-9-17 23:21:42 | 显示全部楼层
这仅是生产者与消费者的求解吧?可以是一种思路.
线程池没这么简单吧?具体做要涉及更多.如创建一堆线程后,应用来了,如何调度某一线程,如何回收,如何接手回调函数等.....
同样谢谢.
发表于 2003-9-17 23:36:37 | 显示全部楼层
就是这样啊
你没有看到得到值后进行处理
处理完后返回循环吗
 楼主| 发表于 2003-9-18 18:00:40 | 显示全部楼层
呵呵。思路应该可以这样,但对于管理,还欠了一点吧。如果一个线程死掉呢?这种设计就不足够了吧?
加入链表,改进一下。
我先试试你这种设计,若有问题再来讨论。:)
发表于 2003-9-19 00:04:12 | 显示全部楼层
死掉什么可能呢

你可以设置线程的cancel为false就行了
总之由你实现
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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