本文主要是介绍读者来信与解答 1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
读者来信用黑色,我的回答用蓝色。经过整理,接近对话体。
> 陈硕,你好,
>
> 阅读了你的书,很有收获。
> 但是没有在moduo的源代码里面找到实现线程模型11的例子。即one thread per loop + thread pool。
> 谢谢。
书第 173 页图 6-14 下面的第一段话,具体改动方法参考前一页的 diff。
> 谢谢。
>
> 另外TcpConnection和Channel的生命周期管理有点问题。
> TcpConnection如果已经被回收了,其包含的Channel也已经被回收了。而这个时候在Channel::handleEvent()里面检查tied_和tie_是危险的。因为其内存已经被回收了。
>
> 如果用户保证TcpConnection被回收之后,不会再用Channel的裸指针,则没有必要在TcpConnection::connectEstablished()中call tie().
TcpConnection 回收之前,会调用 connectDestroyed,其中调用 channel_->remove();,这样就不可能再会有 Channel::handleEvent() 被调用了。
tie() 的作用是防止 Channel::handleEvent() 运行期间其 owner 对象析构&
这篇关于读者来信与解答 1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!