libco icon indicating copy to clipboard operation
libco copied to clipboard

目前这个使用这个库对原项目似乎还是有不小的侵入性

Open lichuang opened this issue 6 years ago • 3 comments

以example_echosvr.cpp代码为例,首先没有hook系统的accept函数,需要调用自命名的co_accept函数。其次在调用co_accept返回小于0的fd的时候,需要自己手动调用co_poll。

为什么这里不对系统的accept函数进行hook,同时在调用accept函数返回小于0fd的时候,库自己内部将这个fd加入poll中呢?因为会出现这种情况,一个服务使用的是另一个二进制库,这个二进制库负责对外接收连接,无法侵入修改它的代码来适配libco的代码。

同样的问题也存在read、write等调用中,还是这个example_echosvr.cpp代码,在处理协程中,首先需要使用者调用co_poll将需要进行read操作的fd加入poll中,仍然对原有的代码造成了侵入。

lichuang avatar Jul 22 '17 09:07 lichuang

不理解为什么不对accept函数进行hook, 相信不少人有相同的疑问, 希望作者们给点提示^_^ @wechatsunny @leiffyli

patpatbear avatar Sep 09 '17 13:09 patpatbear

看完example_echosvr也同样有类似的疑问:

  1. accept为什么不hook?
  2. readwrite_routine函数应该就是一个read + write的写,但里面还要和poll函数打交道?

确认这个包能和mysqlclient的编译支持协程?

luxuan avatar Oct 29 '17 15:10 luxuan

accept 没hook的原因,估计是libco的预设应用场景是hook 第三方的client API

YingshuLu avatar May 27 '18 14:05 YingshuLu