我在python 3中使用非阻塞异步线程websockets协议(Tornado)。我在全局级别非常保守地使用字典,但它可以由任意数量的线程更新(基本上是当新用户连接时,他们的套接字通过字典映射到一个对象)。我已经制作了一个基本的系统来处理并发......但这不是任何官方方法。由于套接字是唯一的,我认为人们尝试同时为同一个套接字分配值应该没有任何问题,但我想知道是否有规模,可能还有另一个问题,例如尝试获取调整大小时字典中的内容。作为参考,这是我想出的“并发修复”。
class Routing_Table:
def set(self, key, value):
self.blocked = self.blocked + 1
self.table[key] = value
self.blocked = self.blocked - 1
def get(self, key):
while(self.blocked > 0):
pass
return self.table[key]
def __init__(self):
self.table = {}
self.blocked = 0
编辑:另外,你认为我应该添加一个类似于设置删除条目的方法吗?