减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。1. 无锁并发编程。多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据。2. CAS算法。Java的Atomic包使用CAS算法 ...
分类:
其他好文 时间:
2018-05-04 12:05:19
阅读次数:
173
Python协程:从yield/send到async/await 转自 http://python.jobbole.com/86069/ <!-- JiaThis Button BEGIN --><!-- JiaThis Button END --> 转自 http://python.jobbole ...
分类:
编程语言 时间:
2018-05-03 16:33:58
阅读次数:
228
一 引子 本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态 cpu正在运行一个任务,会在两种情况下切走去执行其他的任务(切换由操作系统强制控制),一种情况是该任务发生了阻塞,另外一种情况是该任务计算的时间 ...
分类:
编程语言 时间:
2018-05-03 01:01:03
阅读次数:
204
首先复习了基于协程实现的套接字通信: 异步io io模型 Stevens在文章中一共比较了五种IO Model: * blocking IO * nonblocking IO * IO multiplexing * signal driven IO * asynchronous IO 由signal ...
分类:
其他好文 时间:
2018-05-02 20:56:00
阅读次数:
160
本文翻译自Unity官方文档:https://docs.unity3d.com/Manual/Coroutines.html 专有名词: Coroutine 协程 Alpha 不透明度 当你调用一个函数时,它会在返回之前一直运行到结束。这实际上意味着在一个函数中发生的任何行为都必须在一个帧更新中发生 ...
分类:
编程语言 时间:
2018-05-02 13:25:12
阅读次数:
279
异步 + 回调:就是把下载好的东西回调主进程执行 或者回调给线程,哪个线程闲着就执行 线程Queue: 线程Event:event.wait() gevent: 协程: 1、单线程下实现并发:协程 并发指的是多个任务看起来是同时运行的 并发实现的本质:切换 + 保存状态 并发、并行、串行 并发:看起 ...
分类:
编程语言 时间:
2018-05-02 02:57:49
阅读次数:
224
week8 1 paramiko模块 paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。 1.Paramiko SSH连接远程主机 (1)使用用户名密码连接远程主机 (2 ...
分类:
编程语言 时间:
2018-05-01 14:04:54
阅读次数:
191
引子 本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态 cpu正在运行一个任务,会在两种情况下切走去执行其他的任务(切换由操作系统强制控制),一种情况是该任务发生了阻塞,另外一种情况是该任务计算的时间过长 ...
分类:
其他好文 时间:
2018-04-30 15:38:40
阅读次数:
188
# yield把函数变成迭代器# return的返回值只返回一次,yield返回多次# 函数在暂停以及继续下一次运行时的状态是有yield保存# 协程函数# def eater(name):# print('%s start to eat food' %name)# while True:# foo ...
分类:
其他好文 时间:
2018-04-30 11:42:22
阅读次数:
153