Код:
Код: Выделить всё
import threading
class Thread(threading.Thread):
def __init__(self, t, *args):
threading.Thread.__init__(self, target=t, args=args)
self.start()
count = 0
lock = threading.Lock()
def increment():
global count
lock.acquire()
try:
count += 1
finally:
lock.release()
def bye():
while True:
increment()
def hello_there():
while True:
increment()
def main():
hello = Thread(hello_there)
goodbye = Thread(bye)
while True:
print count
if __name__ == '__main__':
main()
Запуск дает понять, что это не так. Вы получаете все случайные приращения данных.
Как именно используется объект блокировки?
Кроме того, я попробовал поместить блокирует внутри функций потока, но все равно безуспешно.
Подробнее здесь: https://stackoverflow.com/questions/105 ... k-a-thread