linyacool

Results 125 comments of linyacool

我是在MainReactor里accept的,但你关于accept的描述是完全错误的

> 咦?关于accept()的描述我是看到《UNIX网络编程》卷1里图2-2所以才这么说的。 > 能不能麻烦给我讲讲你的理解? 你好好看看那个图的描述啊,图和描述都没错,到你这话就错了,你可以写个程序试试啊,单纯将可能很难理解

> 大家加个qq群可好? > […](#) > ------------------ 原始邮件 ------------------ 发件人: "Yingying Xie"; 发送时间: 2019年4月19日(星期五) 下午4:40 收件人: "linyacool/WebServer"; 抄送: "Subscribed"; 主题: Re: [linyacool/WebServer] TCP连接3次握手与accept()的关系 (#8) 咦?关于accept()的描述我是看到《UNIX网络编程》卷1里图2-2所以才这么说的。 能不能麻烦给我讲讲你的理解? — You are receiving this...

> > hi~ > > 关于你对“建立连接的过程”的描述有点疑问:“当TCP连接完成3次握手后,会触发listenfd的读事件,应用程序调用accept()”。 > > accept()的调用应该是服务端接收到SYN分节之后调用的,调用accept()使得TCP层发送一个SYN ACK分节,当收到ACK之后accept()返回。所以accept()返回才标志着TCP三次握手完成。 > > 请问accept()是由MainReactor线程调用的还是SubReactor()线程调用的? > > 我的理解是accept其实只是从内核维护的已连接队列中抽出一个返回给调用者,和三次握手没啥关系,如果已连接队列为空,则accept会阻塞直到已连接队列不为空。accept可以在三次握手之前调用,也可以在之后调用。不知道理解是否正确,如有错误,感谢指正。 我也是这样理解的

可以直接调的,用runInLoop的原因只是因为这样不用动脑,并且一定不会错,follow自己的风格就好了

> > > 请问一下。协程库相较于mudo网络库,协程的机制会不会更好一点或者说协程也有其本身的缺点?希望,大佬们分享解答。 单纯论机制的话,我觉得协程好很多,callback的编程方式不如协程直观

> > > 您好,我想请问一下。想要进一步学习协程的知识的话是直接读源码如《libco》《libgo》,还是写个项目好一点呢?求大佬不吝指教。 https://github.com/cloudwu/coroutine 你可以看下这个,你说的几个源码基本都没有文档没有注释,学习成本还是很高的

cond_.wait() 会释放锁,没有占用锁的

@tiankaijin 1. getNextLoop就一个线程调,不会有竞态。已经挂掉的loop或thread,线程一个挂掉整个进程就挂了。 2. 不一定为真的,看是从哪个线程调的。 3. handleWrite里面可能改了