bigbao9494

Results 28 comments of bigbao9494

> `func accept() > { > while(1) > { > socket.accept(); > connection.go_start() > } > } > > int main() > { > go accept; > } > `...

> > > `func accept() { while(1) { socket.accept(); connection.go_start() } } int main() { go accept; } ` > > > 一个协程内负责accept socket,有新的连接之后,将连接的操作(send receive)用新的协程进行操作,在测试并发量的时候发现一个问题: > > > 假如我有开了10个processor,但是cpu只有3,4个可以跑到30%左右,继续增加并发量测试,仍然是这个数据。根据调度算法来看,如果task被均分,应该是10个cpu都有消耗吧? >...

> > > 如果很care性能,看一下test/asio下的demo,用这个测试吧 > > libgo 3.0的hook选择的是安全但是性能较差的实现方式,同时提供了和异步网络库搭配使用的能力。 libgo的hook功能很好,适用性也不错,比起其它库是一大特点。 我觉得如果能够增加一种原生的协程API,这样对不需要HOOK的这部分需求可以有更好地性能(这种差异可能不小) 确实有一部分需求就是只在自己的代码里使用协程,不需要使用到第3方库,我之前在上版本 的libgo上就做了这部分功能,可以编译的时候提供选择来决定是否使用原生协程API。

就是不需要考虑第3方的HOOK,只关心我自己的IO异步,这样就可以不用在异步IO时使用SLEEP

用LIBGO的函数来使用SOCKET

使用上确实是透明的,为了兼容HOOK第3方库,在异步IO时会使用SLEEP

稍等一下,我去看看我以前写的文档,总结一下

@yyzybb537 因为我有一段时间没有搞这块的东西了,有些遗忘了需要再看看代码回忆一下,后面一点再仔细回复

sample_echo.cpp示例 1、connet问题可能是: connect_mode_hook函数中有BUG,这个if判断有问题, 应该修改成if (res < 0 && WSAGetLastError() != WSAEINPROGRESS && WSAGetLastError() != WSAEWOULDBLOCK) if (res < 0 && WSAGetLastError() != WSAEINPROGRESS) { ErrnoStore es; setNonblocking(s, false); return res;...

晕,我是上次VS编译不过时自己新建的工程来测试的,那么windows是否有sample_echo类似的测试用例?