美文网首页BB-black开发板[Linux arm-v8]
协程机制的理解 -- Apple的学习笔记

协程机制的理解 -- Apple的学习笔记

作者: applecai | 来源:发表于2020-06-11 22:29 被阅读0次

一,兴趣的由来

由于看了《向往的生活》里面薇娅自带推流工具做直播。
1.我就搜索了下推流
2.然后搜索到了ffmpeg流媒体开发
3.然后看了一个流媒体开发入门
3.1 描述简单的RTMP推流
3.2 音视频基础知识
3.3 流媒体服务器和客户端协议包括rtmp(客户端)hhtp-flv(PC-vwe)hls(手机)。
3.4 SRS开源流媒体服务器的框架
3.5 里面介绍了直播播的实时性B帧P帧相关。
3.6 然后又讲了协程开源的链接数量百万级客户端,只要内存够大。

我首先比较感兴趣的就是协程,因为我做socket服务器和客户端连接数量很少。但是从来没有想过这样的百万级连接应该如何设计。所以我就好奇。

二,协程的理解

网上可以搜索到很多协程机制的资料及协程和线程对比。
看完后,我很容易理解,因为很多知识点相同的,属于经验迁移型的学习,我之前实现过RTOS的task创建及调度。可以参考我的学习笔记大总结:各类RTOS学习总结--Apple的学习笔记

协程(Coroutine)在执行过程中可中断去执行其他任务,执行完毕后再回来继续原先的操作。可以理解为两个或多个程序协同工作。
其实它是一个线程中按顺序执行。并不是多线程按时间片切换的同步运行,所以不需要加锁。效率高。
另外在同一个线程中,用户态轻量及的函数切换(任务栈切换),需要切换的内容就是任务栈,所以占用内存少,操作速度快。
常利用多进程(利用多核)+协程来获取更高的性能。

三,我的思考总结

对于我已经有如下知识点
1.OS基础
2.linux用户态内核态基础
3.io事件驱动基础(io检测+io处理完成2个流程)
4.同步/异步和阻塞/非阻塞基础+4种基础的socket模型
5.线程/进程基础

然后我深度思考了协程的好处
我觉得应用场景应该是io密集型需要用到协程设计。
答:原因是比如用户态调用send后,用协程切出,当io数据处理ready后,通过协程调度器来决定resume到哪个协程继续运行。

说白了,就是节约io等待的时间,因为就算非阻塞io,仅在检测到io为异步,当处理读写数据还是有阻塞的。
另外,协程占用内存小,若用多线程怕内存不够。

那么改成epoll回调+线程池异步的设计模型和协程区别大吗?我2个都没有用过,只是今天刚了解,所以暂时无法知道对比效果。之后还是会进入主题ffmpeg流媒体开发。将来会用到协程,了解协程只是一个准备工作。

相关文章

  • 服务器Redis到Memcached的epoll模型--Appl

    协程机制的理解 -- Apple的学习笔记中最后我说没用过epoll。然后今天找了个网课学习了解下。因为后续ffm...

  • 协程机制的理解 -- Apple的学习笔记

    一,兴趣的由来 由于看了《向往的生活》里面薇娅自带推流工具做直播。1.我就搜索了下推流2.然后搜索到了ffmpeg...

  • Kotlin协程(入门向)

    最近在学习kotlin的协程,分享一下学习经验! 〇、什么是协程? 官方解释: 协程是轻量级的线程。 个人理解:协...

  • Kotlin协程

    最近在学习kotlin的协程,分享一下学习经验! 〇、什么是协程? 官方解释: 协程是轻量级的线程。 个人理解:协...

  • Android的协程(Coroutines)基础概念

    最近学习了下协程,在这里分享一下我自己的理解。 1、协程是什么? 在定义协程是什么之前,我们应该先知道协程是做什么...

  • 四、生命周期:2、协程详解

    1、协程常规使用方式 2、协程嵌套协程测试 3、协程实现返回值机制 协程可以传递参数进入,但是没有返回值功能,有时...

  • 进程+线程+协程

    协程 最早是进程的工作机制,后来被现在抢占式的进程工作机制替代。 目前含义是在线程范围的。 协:是协作的意思。协程...

  • 协程的学习笔记

    协程整理的相关教程: Kotlin协程官方教程[https://www.kotlincn.net/docs/ref...

  • go的协程并发-channel消息机制

    go的协程并发-channel消息机制 方式一 方式二 go-协程实现方案汇总

  • Kotlin---使用协程的异步

    协程间的通信 协程与协程间不能直接通过变量来访问数据,会导致数据原子性的问题,所以协程提供了一套Channel机制...

网友评论

    本文标题:协程机制的理解 -- Apple的学习笔记

    本文链接:https://www.haomeiwen.com/subject/tgvitktx.html