返回信息流求助高手:
我想用多线程socket实现这样的功能:
多个客户端同时向服务器发出请求, 服务器端接收各个客户端的请求, 将请求放到请求队列, 等待业务线程进行处理, 服务器端要能够实时地看到请求队列的长度,即有多少请求还没有处理,从程序开始运行,已经处理了多少请求。。
网络通信的编程我已经弄好了,就是不知道用什么方法读取请求队列当前的长度,这个是要自己建一个队列,进行操作呢,还是使用socket的任务队列就可以。。。。
新手 希望高手相助。。。
这是一条镜像帖。来源:北邮人论坛 / dot-net / #1474同步于 2010/4/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖
【求助】用多线程socket编程
miaoze612
2010/4/2镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 miaoze612 的大作中提到: 】
: 求助高手:
: 我想用多线程socket实现这样的功能:
: 多个客户端同时向服务器发出请求, 服务器端接收各个客户端的请求, 将请求放到请求队列, 等待业务线程进行处理, 服务器端要能够实时地看到请求队列的长度,即有多少请求还没有处理,从程序开始运行,已经处理了多少请求。。
: ...................
是生产者/消费者模型吗?
问题描述好复杂
没明白业务线程和socket任务队列的关系
lz是否应该看看socket用来做什么,所谓的请求到底是网络连接请求还是逻辑任务请求
看样子业务线程就是承载具体逻辑而和网络层连接没关系
那么所需要的只不过是一个自定义的任务队列,用来存放各个连接上产生的逻辑任务
那顶多就是个多生产者多消费者模型了
不知道我的sb想法对不对。。。
【 在 ericyosho 的大作中提到: 】
: 我有一个很SB的问题,既然都用多线程了,为什么不多线程处理多个client呢?
出去玩了两天,回复不及时,望见谅。。。
谢谢。。。
用多线程是为了持续监听客户端连接的,,因为是特别大的系统(GIS),如果每个client用一个线程,当用户变得很大是,系统必然崩溃。。。。。。
【 在 ericyosho 的大作中提到: 】
: 这个长度,我觉得没有意义。
: 你读到这个长度,准备用的时候,说不定,已经被服务程序拿去服务去了。
这个长度是用来做负载均衡监测的,可以有延时,,只是为了对比均衡算法的有效性设置的。。。
【 在 ClearRiver 的大作中提到: 】
:
: 是生产者/消费者模型吗?
一开头觉得可能是吧,但是又想 TCP/IP协议本身就实现了那个请求队列,我要是能直接读那个就可以了,现在就是不知道怎么读到那个队列。。。。。。
【 在 mdragon 的大作中提到: 】
: 设两个变量,收到请求时一个+1,处理完请求另外一个+1
对啊 目前我是这样做的,,,我只是想 能不能直接读取tcp/ip实现的那个队列的长度,,,这样就不用额外设置变量了。。