您的位置:首页 > 编程语言 > Python开发

stackless python如何给tasklet加锁

2014-08-13 10:08 309 查看
stacless本身并不支持锁机制,但是可以通过channel的send和receive方法来模拟,下面是一个简单的锁。

import stackless

class TaskLock(stackless.channel):

    def __init__(self):
        self._islock = False
        self.tasklet = None

    def lock(self):
        if self._islock == True :
            self.receive()

        self.tasklet = stackless.getcurrent()
        self._islock = True

    def unlock(self):
        self.tasklet = None
        self._islock = False

        if self.balance < 0 :
            self.send(0)

lock = TaskLock()
lock.lock()
...
lock.unlock()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: