yulihua49
发表于 2013-02-22 11:31
本帖最后由 yulihua49 于 2013-02-22 11:33 编辑
iw1210 发表于 2013-02-22 11:23 static/image/common/back.gif
4、5个退不出来,什么意思?
丢事件了,服务器不响应,有4、5个客户端死等。
iw1210
发表于 2013-02-22 11:39
yulihua49 发表于 2013-02-22 11:31 static/image/common/back.gif
丢事件了,服务器不响应,有4、5个客户端死等。
用队列了么?
yulihua49
发表于 2013-02-22 11:46
本帖最后由 yulihua49 于 2013-02-22 11:59 编辑
iw1210 发表于 2013-02-22 11:39 static/image/common/back.gif
用队列了么?
用了,你看源码:
q_add().....
队列没问题。活都干完了,激活事件后select不响应了。
这是worker里激活select的代码。最后的几个线程,执行完fprintf后没消息了。int evt=conn->events;
conn->events=0;
pthread_mutex_lock(&beatLock);
FD_SET(sock,&rfds);
if (conn->woff > 0) FD_SET(sock,&wfds);
FD_SET(sock,&efds);
pthread_mutex_unlock(&beatLock);
fprintf(stderr,"work %lu:sock=%d,events=%08X\n",pthread_self(),sock,evt);
if(!pthread_mutex_trylock(&beatLock)) {
beatc='\n';
write(beat,&beatc,1);
pthread_mutex_unlock(&beatLock);
}
这几个fd的最后遗言:
work 139915560453888:sock=9,events=00000001
work 139915508004608:sock=8,events=00000001
work 139915549964032:sock=10,events=00000001
work 139915570943744:sock=11,events=00000001
work 139915581433600:sock=12,events=00000001
work 139915539474176:sock=13,events=00000001
work 139915528984320:sock=14,events=00000001
就这几个事件丢了,相应的fd没有关闭。服务器没有死。
继续用telnet localhost 9876
还是可以正常工作的。
starwing83
发表于 2013-02-22 11:58
本帖最后由 starwing83 于 2013-02-22 11:59 编辑
回复 126# linux_c_py_php
有没有示例代码?我来看看。
对了,如果你是coroutine,那么瓶颈再怎么说也应该在lua_resume上面吧 = =在lua_pcall上面是闹哪样= =
yulihua49
发表于 2013-02-22 12:00
本帖最后由 yulihua49 于 2013-02-22 12:07 编辑
starwing83 发表于 2013-02-22 11:58 static/image/common/back.gif
回复 126# linux_c_py_php
13页129楼是调度器。
客户端就用楼主给的那个。
里边的nohup.out就是最后执行结果。
编译后:
nohup ./server &
就可以了。
可以直接用telnet测试单连接。
starwing83
发表于 2013-02-22 12:16
回复 135# yulihua49
我说的是蛇兄的Lua问题好么= =他调用xmove移动值不成功= =
starwing83
发表于 2013-02-22 12:17
select是会有数量限制的,但是epoll没有。
select还会有那个fd-set的开销,epoll也不会存在开销问题。
yulihua49
发表于 2013-02-22 12:21
本帖最后由 yulihua49 于 2013-02-22 12:26 编辑
starwing83 发表于 2013-02-22 12:17 static/image/common/back.gif
select是会有数量限制的,但是epoll没有。
select还会有那个fd-set的开销,epoll也不会存在开销问题。
现在那个先不管,能干活了再说。
有谁写过select的线程池吗?交流一下如何?
我也是抽风。有人说要用select,可移植。能力和效率先不管。
大家只说到select的能力和效率不行,我现在看不止如此,恐怕流程都走不下来。
文档说select用于同步IO。
现在拿他当异步IO,有点艰难。
iw1210
发表于 2013-02-22 12:43
回复 133# yulihua49
看代码太累,你说说你的设计吧,每个线程的工作是什么?
iw1210
发表于 2013-02-22 12:45
回复 137# starwing83
fd-set开销很大么?