Tôi gặp sự cố khi cần x
chuỗi để chờ cho đến khi tất cả các chủ đề đạt đến điểm đồng bộ hóa. Giải pháp của tôi sử dụng phương thức synchronise
dưới đây được gọi bởi mỗi hàm luồng khi chúng cần đồng bộ hóa.Đồng bộ nhiều chủ đề trong python
Có cách nào tốt hơn để thực hiện việc này không?
thread_count = 0
semaphore = threading.Semaphore()
event = threading.Event()
def synchronise(count):
""" All calls to this method will block until the last (count) call is made """
with semaphore:
thread_count += 1
if thread_count == count:
event.set()
event.wait()
def threaded_function():
# Do something
# Block until 4 threads have reached this point
synchronise(4)
# Continue doing something else
tôi khám phá gợi ý đầu tiên của bạn, nhưng có một nhu cầu để có bài làm cả hai trước khi đồng bộ hóa và sau khi đồng bộ hóa công việc mà không chia nỗ lực thành 2 nhiệm vụ. Nếu tôi không có ràng buộc này, giải pháp của bạn sẽ là lý tưởng. –
Vì tất cả các chủ đề chia sẻ cùng một bộ nhớ chính xác, không rõ tại sao các luồng của bạn không thể bị phân tách thành hai bước. Thông tin được tạo trước đồng bộ hóa sẽ hoàn toàn có sẵn cho các chủ đề mới để sử dụng sau synch. –