linux下多线程问题

sevenfish 2005-02-19 02:35:40
如何实现上万个线程用于tcp连接
...全文
225 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sevenfish 2005-03-14
  • 打赏
  • 举报
回复
其实我这个应用中,每个线程每隔8秒处理一下数据,处理时间很短,主要时间花在建立tcp连接和等待上了,所以开1万个线程是划不来的,才考虑线程池。
sevenfish 2005-03-08
  • 打赏
  • 举报
回复
现在在尝试线程池,那位高手能否指点一二
DanXer 2005-03-08
  • 打赏
  • 举报
回复
简单讲,没有任何一种巧妙的技术能够达到你的要求。
线程池只能加快每个用户的相应速度,而且并发数只能是很少数的(线程池里的线程一般不会开太多),如果你要达到上万用户并发。因为任何一个线程执行一条指令之后就要挨个把一万个线程都执行一条指令轮寻一遍,花在每两个线程环境(上下文)切换的时间要多于每一个线程执行的那条指令的执行时间。你的服务器会变得不可想象得慢,我有试过2000个线程就已经比单线程处理所有用户的请求时间慢了3-5倍。
还是用硬件解决吧,开一万个线程是非常stupid的。
tengulre 2005-02-23
  • 打赏
  • 举报
回复
是的,udp较好
yuanlei1978113 2005-02-23
  • 打赏
  • 举报
回复
为什么要用tcp,而不试试udp呢。
sevenfish 2005-02-23
  • 打赏
  • 举报
回复
做的是城市出租车辆监控,有上万辆车辆不停的向服务器发送信息,必须建立上万个tcp连接,每个连接用线程处理数据的发送
sharkhuang 2005-02-23
  • 打赏
  • 举报
回复
epoll
keard 2005-02-23
  • 打赏
  • 举报
回复
tcp也好udp也好,各有各的好,不存在哪个比较好的说法

一万辆车的接发送数据跑在一台机器,本身就不太现实,机器撑不住吧,
最好分成几个机器

nodummy 2005-02-19
  • 打赏
  • 举报
回复
Linux很久以前就支持thread了,老的Unix才是只有process没有thread的……不过以前的Linux Thread都是使用用户级实现的

Linux目前的thread已经是kernel支持的了,不再是用户空间的thread或者是LWP了……

目前实现的叫NTPL,是真正意义上的线程了。NTPL的目标就是取代用户空间的PTH的……
zeusnchen 2005-02-19
  • 打赏
  • 举报
回复
POSIX THREAD是用户级线程,所以切换开销不大
不过支持上晚个线程没有必要吧?
不知你的系统是不是要全国人民都一起上?
robinswan 2005-02-19
  • 打赏
  • 举报
回复
上万个线程?!Linux下面没有线程的概念吧,只有进程。
nodummy 2005-02-19
  • 打赏
  • 举报
回复
……上万的线程……

这个没有意义吧?Thread不是越多越好,到了那个时候Thread切换消耗在上下文转换上的时间就已经比你获得的性能要多得多了。

还不如用thread pool来得方便,只要一般来说thread pool这样的东西里面只要有2+CPU数量x2的线程来执行你的连接处理就可以了……

23,110

社区成员

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

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