2. 不使用多线程的话,一般中型商业应用服务器是否可行?
3. 现在的情形:
需要做一个服务器,提供四个端口,给四个互不相干的业务使用;
可虑到业务上可能对效率有一定要求,而且四个业务理应互不干扰;
所以想,做成至少四线程的是否会好一些。。。
网上查找了 "libevent + 多线程",没找到相关的介绍信息
知道的,给点看法,谢谢先。。。
19 个解决方案
#1
1 libevent 是提供的单线程分阻塞模式服务的开源库!
2 看具体需求吧!长连接,短连接这些要求!不过一般都会采用多线程处理的
当然多进程处理也是可以的!
3 可以开一个线程池处理吧!
如果不会频繁的线程开启关闭操作也也可以不开,就4个线程而已!
应该没有问题!处理好异步问题就好!
2 看具体需求吧!长连接,短连接这些要求!不过一般都会采用多线程处理的
当然多进程处理也是可以的!
3 可以开一个线程池处理吧!
如果不会频繁的线程开启关闭操作也也可以不开,就4个线程而已!
应该没有问题!处理好异步问题就好!
#2
#3
管理员,帮忙删下上面的广告!!!
#4
开线程的话,event_add这种操作就要加锁保护了
如果 event_base支持多个的话,或许就不用锁什么的了(我们使用的这一层)。。。
工作中有用过这个么?libevent+多线程
#5
喜欢单线程 cpu有富余的话,多开几个进程便可……
#6
谢谢,看来你是比较认同单线程的方式
因为都是非阻塞的方式,理论上是不用担心相互影响的问题
但,上级提议一个连接(短连接)创建一个线程来做
如果是个人的兴趣的话,我也会直接用单线程来做的
#7
上级提议一个连接(短连接)创建一个线程来做,是动态创建? 还是用线程池吧
#8
上级提议一个连接(短连接)创建一个线程来做,是动态创建? 还是用线程池吧
工程中的别的服务器例子是动态创建的,没用线程池
刚又想了下,里面有一个业务不用多线程的话,很浪费资源(资源有多个,如果单线程做的话,1个资源就可以了,剩下的都用不上)
#9
上级提议一个连接(短连接)创建一个线程来做,是动态创建? 还是用线程池吧
工程中的别的服务器例子是动态创建的,没用线程池
刚又想了下,里面有一个业务不用多线程的话,很浪费资源(资源有多个,如果单线程做的话,1个资源就可以了,剩下的都用不上)
可能有些浪费的,因为可能其中某个业务此时并不做任何动作呢,类似线程挂起的状态,
这个时候可能就比较浪费资源了!
所以还是要综合考虑,到底是选多线程 还是单线程多进程
亦或单线程(libevent库)+多线程!【比较频繁的业务用libevent,其他业务需要时才开启线程处理】
#10
上级提议一个连接(短连接)创建一个线程来做,是动态创建? 还是用线程池吧
工程中的别的服务器例子是动态创建的,没用线程池
刚又想了下,里面有一个业务不用多线程的话,很浪费资源(资源有多个,如果单线程做的话,1个资源就可以了,剩下的都用不上)
可能有些浪费的,因为可能其中某个业务此时并不做任何动作呢,类似线程挂起的状态,
这个时候可能就比较浪费资源了!
所以还是要综合考虑,到底是选多线程 还是单线程多进程
亦或单线程(libevent库)+多线程!【比较频繁的业务用libevent,其他业务需要时才开启线程处理】
又想了想,其实,那个业务也存在等待响应的时候,做成非阻塞的,也可以同时(假象的)使用多个资源
如果可以的话,先用单线程做下看,效率不行,再引进多线程好了
#11
libevent支持多线程编程,每个事件需要关联到自己的event_base
用多线程也可以做!用异步的方法!
用多线程也可以做!用异步的方法!
#12
上级提议一个连接(短连接)创建一个线程来做,是动态创建? 还是用线程池吧
工程中的别的服务器例子是动态创建的,没用线程池
刚又想了下,里面有一个业务不用多线程的话,很浪费资源(资源有多个,如果单线程做的话,1个资源就可以了,剩下的都用不上)
可能有些浪费的,因为可能其中某个业务此时并不做任何动作呢,类似线程挂起的状态,
这个时候可能就比较浪费资源了!
所以还是要综合考虑,到底是选多线程 还是单线程多进程
亦或单线程(libevent库)+多线程!【比较频繁的业务用libevent,其他业务需要时才开启线程处理】
又想了想,其实,那个业务也存在等待响应的时候,做成非阻塞的,也可以同时(假象的)使用多个资源
如果可以的话,先用单线程做下看,效率不行,再引进多线程好了
单线程一点问题没有,如果你要处理上万请求时,可以考虑孵化多进程来实现。强制你使用多线程的领导估计也就听说过多线程而已
#13
又想了想,其实,那个业务也存在等待响应的时候,做成非阻塞的,也可以同时(假象的)使用多个资源
如果可以的话,先用单线程做下看,效率不行,再引进多线程好了
单线程一点问题没有,如果你要处理上万请求时,可以考虑孵化多进程来实现。强制你使用多线程的领导估计也就听说过多线程而已
只是建议创建线程来做子业务,呵呵,
你的“单线程一点问题没有”,让我踏实了不少,哈哈
#14
libevent支持多线程编程,每个事件需要关联到自己的event_base
用多线程也可以做!用异步的方法!
你的意思是:event_base支持多个?
目前四个业务互不相干,如果我开四个线程,每个线程创建一个event_base,就什么锁也不用了
是不是这样?
#15
libevent支持多线程编程,每个事件需要关联到自己的event_base
用多线程也可以做!用异步的方法!
你的意思是:event_base支持多个?
目前四个业务互不相干,如果我开四个线程,每个线程创建一个event_base,就什么锁也不用了
是不是这样?
不是的。
具体你看看这个:
http://www.cppblog.com/converse/archive/2009/01/12/71809.html
#16
你的意思是:event_base支持多个?
不是的。
具体你看看这个:
http://www.cppblog.com/converse/archive/2009/01/12/71809.html
之前看到过这个,谢谢。。。
#17
先问这么多,谢谢各位,结贴
#18
你的问题最后怎么解决的
#19
我想问两个问题:
1.正如你所说,创建多个event_base时,锁的问题怎么解决?
2.libevent单线程处理能力到底如何?
3.如果非要加入多线程或者线程池,在libevent操作的什么环节可以加入?
1.正如你所说,创建多个event_base时,锁的问题怎么解决?
2.libevent单线程处理能力到底如何?
3.如果非要加入多线程或者线程池,在libevent操作的什么环节可以加入?
#20
#1
1 libevent 是提供的单线程分阻塞模式服务的开源库!
2 看具体需求吧!长连接,短连接这些要求!不过一般都会采用多线程处理的
当然多进程处理也是可以的!
3 可以开一个线程池处理吧!
如果不会频繁的线程开启关闭操作也也可以不开,就4个线程而已!
应该没有问题!处理好异步问题就好!
2 看具体需求吧!长连接,短连接这些要求!不过一般都会采用多线程处理的
当然多进程处理也是可以的!
3 可以开一个线程池处理吧!
如果不会频繁的线程开启关闭操作也也可以不开,就4个线程而已!
应该没有问题!处理好异步问题就好!
#2
#3
管理员,帮忙删下上面的广告!!!
#4
1 libevent 是提供的单线程分阻塞模式服务的开源库!
2 看具体需求吧!长连接,短连接这些要求!不过一般都会采用多线程处理的
当然多进程处理也是可以的!
3 可以开一个线程池处理吧!
如果不会频繁的线程开启关闭操作也也可以不开,就4个线程而已!
应该没有问题!处理好异步问题就好!
开线程的话,event_add这种操作就要加锁保护了
如果 event_base支持多个的话,或许就不用锁什么的了(我们使用的这一层)。。。
工作中有用过这个么?libevent+多线程
#5
喜欢单线程 cpu有富余的话,多开几个进程便可……
#6
喜欢单线程 cpu有富余的话,多开几个进程便可……
谢谢,看来你是比较认同单线程的方式
因为都是非阻塞的方式,理论上是不用担心相互影响的问题
但,上级提议一个连接(短连接)创建一个线程来做
如果是个人的兴趣的话,我也会直接用单线程来做的
#7
喜欢单线程 cpu有富余的话,多开几个进程便可……
谢谢,看来你是比较认同单线程的方式
因为都是非阻塞的方式,理论上是不用担心相互影响的问题
但,上级提议一个连接(短连接)创建一个线程来做
如果是个人的兴趣的话,我也会直接用单线程来做的
上级提议一个连接(短连接)创建一个线程来做,是动态创建? 还是用线程池吧
#8
上级提议一个连接(短连接)创建一个线程来做,是动态创建? 还是用线程池吧
工程中的别的服务器例子是动态创建的,没用线程池
刚又想了下,里面有一个业务不用多线程的话,很浪费资源(资源有多个,如果单线程做的话,1个资源就可以了,剩下的都用不上)
#9
上级提议一个连接(短连接)创建一个线程来做,是动态创建? 还是用线程池吧
工程中的别的服务器例子是动态创建的,没用线程池
刚又想了下,里面有一个业务不用多线程的话,很浪费资源(资源有多个,如果单线程做的话,1个资源就可以了,剩下的都用不上)
可能有些浪费的,因为可能其中某个业务此时并不做任何动作呢,类似线程挂起的状态,
这个时候可能就比较浪费资源了!
所以还是要综合考虑,到底是选多线程 还是单线程多进程
亦或单线程(libevent库)+多线程!【比较频繁的业务用libevent,其他业务需要时才开启线程处理】
#10
上级提议一个连接(短连接)创建一个线程来做,是动态创建? 还是用线程池吧
工程中的别的服务器例子是动态创建的,没用线程池
刚又想了下,里面有一个业务不用多线程的话,很浪费资源(资源有多个,如果单线程做的话,1个资源就可以了,剩下的都用不上)
可能有些浪费的,因为可能其中某个业务此时并不做任何动作呢,类似线程挂起的状态,
这个时候可能就比较浪费资源了!
所以还是要综合考虑,到底是选多线程 还是单线程多进程
亦或单线程(libevent库)+多线程!【比较频繁的业务用libevent,其他业务需要时才开启线程处理】
又想了想,其实,那个业务也存在等待响应的时候,做成非阻塞的,也可以同时(假象的)使用多个资源
如果可以的话,先用单线程做下看,效率不行,再引进多线程好了
#11
libevent支持多线程编程,每个事件需要关联到自己的event_base
用多线程也可以做!用异步的方法!
用多线程也可以做!用异步的方法!
#12
上级提议一个连接(短连接)创建一个线程来做,是动态创建? 还是用线程池吧
工程中的别的服务器例子是动态创建的,没用线程池
刚又想了下,里面有一个业务不用多线程的话,很浪费资源(资源有多个,如果单线程做的话,1个资源就可以了,剩下的都用不上)
可能有些浪费的,因为可能其中某个业务此时并不做任何动作呢,类似线程挂起的状态,
这个时候可能就比较浪费资源了!
所以还是要综合考虑,到底是选多线程 还是单线程多进程
亦或单线程(libevent库)+多线程!【比较频繁的业务用libevent,其他业务需要时才开启线程处理】
又想了想,其实,那个业务也存在等待响应的时候,做成非阻塞的,也可以同时(假象的)使用多个资源
如果可以的话,先用单线程做下看,效率不行,再引进多线程好了
单线程一点问题没有,如果你要处理上万请求时,可以考虑孵化多进程来实现。强制你使用多线程的领导估计也就听说过多线程而已
#13
又想了想,其实,那个业务也存在等待响应的时候,做成非阻塞的,也可以同时(假象的)使用多个资源
如果可以的话,先用单线程做下看,效率不行,再引进多线程好了
单线程一点问题没有,如果你要处理上万请求时,可以考虑孵化多进程来实现。强制你使用多线程的领导估计也就听说过多线程而已
只是建议创建线程来做子业务,呵呵,
你的“单线程一点问题没有”,让我踏实了不少,哈哈
#14
libevent支持多线程编程,每个事件需要关联到自己的event_base
用多线程也可以做!用异步的方法!
你的意思是:event_base支持多个?
目前四个业务互不相干,如果我开四个线程,每个线程创建一个event_base,就什么锁也不用了
是不是这样?
#15
libevent支持多线程编程,每个事件需要关联到自己的event_base
用多线程也可以做!用异步的方法!
你的意思是:event_base支持多个?
目前四个业务互不相干,如果我开四个线程,每个线程创建一个event_base,就什么锁也不用了
是不是这样?
不是的。
具体你看看这个:
http://www.cppblog.com/converse/archive/2009/01/12/71809.html
#16
你的意思是:event_base支持多个?
不是的。
具体你看看这个:
http://www.cppblog.com/converse/archive/2009/01/12/71809.html
之前看到过这个,谢谢。。。
#17
先问这么多,谢谢各位,结贴
#18
你的问题最后怎么解决的
#19
我想问两个问题:
1.正如你所说,创建多个event_base时,锁的问题怎么解决?
2.libevent单线程处理能力到底如何?
3.如果非要加入多线程或者线程池,在libevent操作的什么环节可以加入?
1.正如你所说,创建多个event_base时,锁的问题怎么解决?
2.libevent单线程处理能力到底如何?
3.如果非要加入多线程或者线程池,在libevent操作的什么环节可以加入?