I have a Web Server running in Python. The server is private, so i only expect around 20 users to connect to it. The server is multi-threaded (8 cores at the moment, so 8 threads I guessed).
When requests come in, I am able to identify the users. On some queries, I need to update a simple dictionary of the form username -> Boolean. How could I make this one thread safe ?
解决方案
If you need a lock (to avoid the race conditions Joonas described), and are stuck with Python 2.4,
import threading
lock = threading.Lock()
shared_dict = {}
def do_thing(user, value):
lock.acquire()
try:
shared_dict[user] = value
finally:
# Always called, even if exception is raised in try block
lock.release()