调用sleep()和yield()的时候锁并没有被释放,而调用wait()将释放锁。这样另一个任务(线程)可以获得当前对象的锁,从而进入它的synchronized方法中。可以通过notify()/notifyAll(),或者时间到期,从wait()中恢复执行。 只能在同步控制方法或同步块中调用wa ...
分类:
编程语言 时间:
2016-05-29 00:39:51
阅读次数:
177
常用方法: next 获取下一个值 send 发送值到生成器 throw 发送异常到生成器 python生成器模拟线程并发: ...
分类:
编程语言 时间:
2016-05-27 16:24:11
阅读次数:
132
一、线程生命周期共五个状态:
新建状态:
Thread t = new Thread()
就绪状态
调用start()方法,
运行状态
使用yield()方法可以使线程主动放弃CPU。线程也可能由于执行结束或执行stop()方法进入死亡状态。每个线程对象都有一个run()方法,当线程对象开始执行时,系统就调用该对象的run()方法。
阻塞状态
线程从阻塞状态恢复到就绪状态有三...
分类:
编程语言 时间:
2016-05-27 12:06:35
阅读次数:
246
python 的 yield 关键字很多人可能不是很熟悉,最早知道这个关键字是看 xrange 的文档,其中提到了 yield。后来开始用 tornado,对 tornado 的异步模式比较感兴趣,也翻了一下 tornado 的源码,很多东西仍然是一知半解。 最近翻了翻 python 的源码,看了一 ...
分类:
编程语言 时间:
2016-05-25 18:25:07
阅读次数:
207
yield 所有的"方法(methods)"隐式跟上一个"块(block)"参数。 块参数也可以明确给定,形式就是在参数前面加一个"&",比如 def fn(arg1, arg2, &block) end,其中的 &block 就是明确给定的块参数。 块参数的动作,可以通过调用 call() 方法执 ...
分类:
其他好文 时间:
2016-05-25 00:28:51
阅读次数:
201
用asyncio提供的@asyncio.coroutine可以把一个generator标记为coroutine类型,然后在coroutine内部用yield from调用另一个coroutine实现异步操作。 为了简化并更好地标识异步IO,从Python 3.5开始引入了新的语法async和awai ...
分类:
其他好文 时间:
2016-05-23 16:55:18
阅读次数:
140
生成器 在Python中我们可以使用yield关键字来让一个函数成为生成器,在Go中我们可以使用信道来制造生成器(一种lazy load类似的东西)。 当然我们的信道并不是简单的做阻塞主线的功能来使用的哦。 下面是一个制作自增整数生成器的例子,直到主线向信道索要数据,我们才添加数据到信道: func ...
分类:
编程语言 时间:
2016-05-23 16:54:47
阅读次数:
265
asyncio可以实现单线程并发IO操作。如果仅用在客户端,发挥的威力不大。如果把asyncio用在服务器端,例如Web服务器,由于HTTP连接就是IO操作,因此可以用单线程+coroutine实现多用户的高并发支持。 asyncio实现了TCP、UDP、SSL等协议,aiohttp则是基于asyn ...
分类:
Web程序 时间:
2016-05-23 16:41:27
阅读次数:
191
在 ES6 中新增了生成器函数的语法,本文解释了生成器函数内 yield 关键字的返回值。 描述 根据语法规范,yield 关键字用来暂停和继续执行一个生成器函数。当外部调用生成器的 next() 方法时,yield 关键字右侧的表达式才会执行。 执行结果会转化为一个对象(包含两个属性, value ...
分类:
其他好文 时间:
2016-05-23 13:17:14
阅读次数:
152
Coroutines Coroutines are the recommended way to write asynchronous code in Tornado. Coroutines use the Python yield keyword to suspend and resume exe ...
分类:
其他好文 时间:
2016-05-22 06:07:08
阅读次数:
155