Skip to content

Latest commit

 

History

History
63 lines (42 loc) · 2.21 KB

【NO.537】Linux服务器开发,异步请求池框架实现,协程前传.md

File metadata and controls

63 lines (42 loc) · 2.21 KB

【NO.537】Linux服务器开发,异步请求池框架实现,协程前传

1.前言

服务器发送完请求不用等待对端回数据,而是用另一个线程进行等待接收收据。 # 1、发送请教,1个io还是多个io 是多个io 2、接收结果的线程,如何拿到fd 解决方法是每次发送出的fd,放到epoll中,接收线程有io可读就读。

2.King式四元组

1、init

  • epoll_create
  • pthread_create 2、commit
  • 创建socket
  • 连接server
  • 准备协议encode
  • send
  • 加入epoll 3、thread_callback
  • while(){ recv(); parser(); fd->epoll_delete } 4、destory
  • close(fd)
  • phthred_cancel

服务器向第三方服务提供请求,拿redis举例:set,get等命令,每一个命令都有一个回调函数处理请教,通过epoll_ctl()增加节点,epoll_wait()函数去等待检测的数据。只是传入一个指针,不会影响红黑树的大小。

c和c++最大的特点就是内存泄漏。 发送信号提交commit后,让出协程call_back,检测是否有数据到达。

线程创建确实会失败,程序运行时间较短确实不容易捕捉这一现象,但是长时间就不一定了,所以要判断返回值。

3.DNS 工作原理举例

在这里插入图片描述

4.补充

内存池最不好理解,需要重点去关注的方面:

  • 内存块的组织
  • 内存分配
  • 内存回收

5.总结

通过今天的异步请求池框架的实现学习,我对异步请求池的实现思路已经是非常清晰了。异步请求池被King老师成为协程的前传,和后面要学的skynet以及协程的调度有着紧密的关系,后续的课程始终在一种懵懂的状态,看完这节课有一种如梦方醒的感觉,这个感觉美妙极了。 最后,感谢一路上帮助小生的朋友们,感谢零声学院的King老师~

原文作者:屯门山鸡叫我小鸡

原文链接:https://bbs.csdn.net/topics/604990131