谁用过libuv的?我发现 echo的例子是单线程的!但是win版 libuv里不是调用的是 win的完成端口吗? 单线程能发挥优势吗? 官方 和网上的我找不到多线程的例子! 求各位大神指教
7 条回复 • 1970-01-01 08:00:00 +08:00
|
1
nybux 2014 年 1 月 13 日 仅仅是echo的话,单线程就够了。
如果有复杂计算的话,用uv_queue_work将工作提交到线程池 |
|
3
nybux 2014 年 1 月 13 日 反射这种没有计算量的处理工作,一个cpu核心就能够完全搞定网卡。所以单线程就可以了。
多线程的话,各种程序框架有各种不同的模型,libuv用的是线程池。用uv_queue_work将工作提交到一个线程池里面去执行,处理完成后,会触发主线程的回调函数 |
|
5
nybux 2014 年 1 月 13 日
要看你的协议了,如果你还要等待对方有数据过来后才处理的话,那要在after_read里面将工作传递到线程池
|
|
6
haohaolee 2014 年 1 月 13 日
IO密集的单线程(或者和CPU数量相当的少量线程)就可以了,完成端口,epoll,kqueue都是这样
|