现在外面既用C++, 又用多线程, 做服务器的多拿吗?

coder_acm 发布于 2015/08/06 13:38
阅读 1K+
收藏 1
1:感觉坑好多, 内存泄露, 死锁, 崩溃, 各种坑
加载中
0
WPracker
WPracker
单线程异步队列
coder_acm
coder_acm
你这样做为了解决处理速度慢的问题, 必须拆分服务器, 是逻辑处理变得复杂...
0
土卫十六
土卫十六
别想得太美。基本功而已,耐心一点即可。
coder_acm
coder_acm
有时候绝对不是基本功, 常在河边走哪有不湿鞋,淹死的都是会游泳的。。。
0
changnet
changnet
C++坑是少不了的。但是死锁、崩溃什么的就是功底问题了
0
码农不会耕田
码农不会耕田

多线程多服务器?试试 select 或者 libev.

内存泄露是代码质量的问题 不是c++的坑 应该自己给自己挖的. 死锁同样也是自己挖的. 

coder_acm
coder_acm
就是这种语言很容易把自己绕进去,灵活性越大, 可选择越多, 考虑不全, 越容易挖坑...
0
xpbob
xpbob
基本功……
xpbob
xpbob
@coder_acm 我说你说的东西都是语法的基本功啊
coder_acm
coder_acm
我想我基本功C++还算可以的。。。。
0
baozhuni
baozhuni
与技术无关,看你个人能力而已
coder_acm
coder_acm
这不在讨论范围....
0
jQer
jQer
2015年了,还有多少逗比在用多线程做 IO 服务器,最逗比的居然还有 "C# 多线程异步" 这种常识都搞不清楚的话。多线程适宜的场合:服务端、客户端图形处理,服务端百万级数据计算,服务端精密图像处理等等。
乌龟壳
乌龟壳
回复 @jQer : 一次一个也没问题吧,换个角度来说,只要同样的逻辑都能把CPU跑满,就没有太多的浪费,至于说可能造成的系统调用增多这确实IOCP没有epoll好。其实用epoll也可以多线程,一个线程wait,其它几个线程抢wait到的事件去处理。不过就是要注意多线程的那些破事,好处就是容易在多核上负载均衡。
jQer
jQer
回复 @乌龟壳 : 所以 epoll_wait 可以不用多线程就能做到交出几百个客户端引用,让程序员去写处理代码。多线程每次最多只能交出 CPU 个数客户端引用。epoll_wait 的多进程,是为了提供 CPU 个数个进程,来处理操作系统交出来的客户端引用。
jQer
jQer
回复 @乌龟壳 : IOCP 本质上还是多线程,每个线程回来只有一个客户端,每次只能处理一个。多个线程每次可以回来多个,但是最多只能是 CPU 总数,没有 epoll_wait 回来的多。
jQer
jQer
回复 @乌龟壳 : 接收客户端描述符数量不一样。epoll_wait 是每次由操作系统内核返回一个客户端列表,里面可以包含成百上千的客户端,然后你可以在一个进程中对这个客户端列表进行处理。这期间没有时间会被浪费。
乌龟壳
乌龟壳
回复 @jQer : 其实我想描述的是IOCP多线程可以每事件进行多核的负载均衡,但是nginx只能每socket,在连接的时候就绑定好了(当然对于nginx这样也没问题)。你说的IOCP是不是GetQueuedCompletionStatus?这个和epoll_wait没啥区别吧,只不过epoll_wait不能多线程同时,而IOCP的可以。至于内部实现另说了。
下一页
0
来自山卡拉的你
来自山卡拉的你

楼主刚毕业?

内存泄露, 死锁, 崩溃这些问题根本就是基本功问题,跟坑不坑根本没关系

coder_acm
coder_acm
毕业两年, 做过两个上线的游戏项目, 第一个项目月流失3000多万,第二个项目单服注册26万人...
0
NDSM
NDSM
从来都是语言适应业务 ,没有业务适应语言的
0
同城陌路人
同城陌路人
你搜索一下,看看nginx是这方面是如何处理的,不需要阅读全部代码,看看其他大神们的分析就ok了
返回顶部
顶部