Goroutine 是用户态自己实现的线程,调度方式遇到IO/阻塞点方式就会让出cpu时间(其实也看编译器的实现,如果TA在代码里面插入一些yield,也是可以的。 反正现在不是抢占式的。) 不能设置goroutine ID, 也拿不到(可以调用C API或者自己修改源码暴漏出来,实际上修改起来挺简 ...
分类:
其他好文 时间:
2019-01-18 12:22:44
阅读次数:
177
#一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理、调度进程,并且将多个进程对硬件的竞争变得有序 #二 多道技术: 1.产生背景:针对单核,实现并发 ps: 现在的主机一般是多核,那么每个核都会利用多道技术 有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io ...
分类:
系统相关 时间:
2019-01-14 21:38:13
阅读次数:
244
本文转自https://www.cnblogs.com/findumars/p/6361627.html 5种网络IO模型(有图,很清楚) 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么, ...
分类:
其他好文 时间:
2019-01-05 18:15:10
阅读次数:
216
1.I/O模型介绍 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-b ...
分类:
其他好文 时间:
2019-01-05 14:17:35
阅读次数:
221
TCP层面有自带的keep-alive,通过参数指定可以直接用,但是这种只能检测一个连接是否ok,如果一个系统连接可用,但是CPU高、IO阻塞无法返回response的话,那么这种检测属于没用的。 因此可以看到dubbo有自带的应用层心跳机制,可以做额外的包括future清理等业务处理。 另外对于h ...
分类:
其他好文 时间:
2018-12-30 22:07:55
阅读次数:
174
IO模型介绍 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-bloc ...
分类:
其他好文 时间:
2018-12-20 23:18:28
阅读次数:
253
一 gevent模块 Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Greenlet, 它是以C扩展模块形式接入Python的轻量级协程。 Greenlet全部运行在主程序操作系统进程的内部,但它们被协作式地调度。 遇到IO阻塞时会自动 ...
分类:
其他好文 时间:
2018-12-19 22:07:31
阅读次数:
224
启动线程数: 启动线程数=【任务执行时间/(任务执行时间-IO等待时间)】*CPU内核数 最佳启动线程数和CPU内核数量成正比,和IO阻塞时间成反比。如果任务都是CPU计算型任务,那么线程数最多不超过CPU内核数,因为启动再多线程,CPU也来不及调度;相反如果是任务需要等待磁盘操作,网络响应,那么多 ...
分类:
其他好文 时间:
2018-12-18 23:17:11
阅读次数:
285
程序大部分浪费时间的地方都是IO 硬盘 。数据库。网络 传统io 阻塞型的 如read 会阻塞 等待有通知过来。 面向字节流 按照字节流逐一读取。 NIO 引入channel、selector 一个线程管理一个selector ,一个selector可以绑定多个channel。然后数据要流过chan ...
分类:
其他好文 时间:
2018-12-16 17:12:05
阅读次数:
109