zoukankan      html  css  js  c++  java
  • 协程 & 用户级(内核级)线程 & 切换开销 & 协程与异步回调的差异

    今天先是看到多线程级别的内容,然后又看到协程的内容。

    基本的领会是,协程是对异步回调方式的一种变换,同样是在一个线程内,协程通过主动放弃时间片交由其他协程执行来协作,故名协程。

    而协程很早就有了,那时候因为协程不够公平,很可能不会主要交出执行权;现在卷土重来。

    跟异步一样,为了减少线程间切换,而尽量在同一线程内进行不同逻辑的伪并行,其实是串行(回调的基础是epoll,因为nodejs是由libev实现的,libev是基于epoll的,只不过不同的平台可能用epoll,可能用kqueue)。而epoll其实是一个加了红黑树实现的优化版的socket检索,而且事件触发是双向链表支持的,(这些socket会以红黑树的形式保存在内核cache里,以支持快速的查找、插入、删除。) 但是使用了回调的机制(也利用了系统级别的中断和回调)。

    epoll内部实现和相关内容可以看这篇文章:http://www.cnblogs.com/charlesblc/p/6242479.html

    注:Linux线程的实现以及用户级线程等内容可以见:http://www.cnblogs.com/charlesblc/p/6242518.html

     

     

  • 相关阅读:
    多线程学习
    Redis学习2
    Redis学习1
    封装
    创建对象内存分析
    稀疏数组
    反转数组、冒泡排序
    可变参数
    .net core 3.x Web Api + Docker个人练手项目
    .net 性能优化手段
  • 原文地址:https://www.cnblogs.com/charlesblc/p/6242520.html
Copyright © 2011-2022 走看看