Python 3 でノンブロッキング非同期スレッド websockets プロトコル (トルネード) を使用しています。グローバル レベルでは非常に保守的に辞書を使用していますが、任意の数のスレッドで更新できます (基本的に、新しいユーザーが接続したとき、それらのソケットは、辞書を介してオブジェクトにマップされます)。並行性を処理するための基本的なシステムを作成しました...しかし、それは公式の方法ではありません。ソケットはユニークなので、同じソケットに同時に値を割り当てようとしても問題はないと思いますが、規模によっては、取得しようとするなど、別の問題があるのではないかと思っていました。サイズ変更時に辞書から何か。参考までに、これが私が思いついた「同時実行修正」です。
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
編集:また、エントリを削除するために set に似たメソッドを追加する必要があると思いますか?