3 개의 스레드가 있습니다. 각 스레드는 val
을 저장합니다. 그리고 각 스레드는 websocket으로부터 메시지를받습니다. 각 스레드에서 on_message()
이 호출되면 val
이 업데이트되고 주 스레드에서 함수를 호출하여 모든 스레드 3 개 중 val
을 합산하려고합니다.다른 스레드의 주 스레드에서 함수 호출?
thread1.start()
thread2.start()
thread3.start()
내 현재 솔루션이 코드는 100 %의 CPU를 사용하여 반복적으로 더 val
업데이트되지 않더라도 sum
를 계산하는 것을
while True:
sum = thread1.val + thread2.val + thread3.val
문제가있다. 하지만 sleep()
을 사용하고 싶지 않습니다. 어떤 스레드에서든지 val
이 업데이트되면 최대한 빨리 계산해야합니다. 나는 큐를 사용하는 방법에 대해 읽었지만 Queue
을 사용하고 싶지 않다. on_message()
이 스레드 1, 2 또는 3에서 호출 될 때 주 스레드에서 함수를 호출하는 방법이 있습니까?
각 스레드에서'on_message()'가 호출 될 때, 나머지 두 개의'vals '가 합산에 어떻게 사용 가능한지 어떻게 확신 할 수 있습니까? 쓰레드는 "어디서나"함수를 호출 할 수 있습니다. 함수는 단지 코드 일 뿐이며 언제든지 모든 스레드에서 실행할 수 있습니다. 필요한 값을 아직 사용할 수 없다면 처리를 완료하지 못할 수도 있습니다. – martineau
블럭을 제외하고 실제로 시도해 보았습니다. – LooksMoneyStatus
불행히도, 그것이 내가 의미했던 바가 아닙니다. 단지 모든 것이 만들어 질 때까지 값을 합할 수 없다는 것입니다. 당신이 받아 들였던 대답은 "마지막 사건"이 있다는 의미에서 그 문제를 다루기 위해서입니다. (하지만 그것은 나에게는 분명하지 않습니다.) – martineau