import threading
class A(threading.local):
def __init__(self, *args, **kwargs):
self.val = 1
bla = A()
class Example(threading.Thread):
def __init__(self, thread_id, value):
self.thread_id = value
self.value = value
super(Example, self).__init__()
def run(self):
bla.val = self.value
print "Thread: %s, id=%s" % (self.thread_id, bla.val)
example1 = Example(1, "A")
example2 = Example(2, "B")
example1.start()
example2.start()
example1.join()
example2.join()
print "Final value %s" % bla.val
The output is:
Thread: A, id=A
Thread: B, id=B
Final value 1
Thread-local storage (TLS) is actually implemented at the hardware level. This Stack Overflow article provides a link to how TLS is implemented on Linux.
http://people.redhat.com/drepper/tls.pdf
This link provides a good general explanation of the Python thread locals library.
No comments:
Post a Comment