comparison grok_interview/thread.py @ 60:d64a8c189a77

Merged
author June Park <me@mrjunejune.com>
date Sat, 20 Dec 2025 13:56:01 -0500
parents 68fa88ac73fe
children
comparison
equal deleted inserted replaced
50:983769fba767 60:d64a8c189a77
1 # 1. data struture {}
2 # - multiple threads can access it
3 # - multiple threads can edit it if it is editable. (mutex)
4
5
6 from hashlib import sha256
7 from threading import Lock
8
9 class Subscribers:
10 def __init__(self):
11 self.id = sha256()
12
13 def on_event(self, event):
14 pass
15
16 class Publisher:
17 def __init__(self):
18 self._subscritions = {}
19 self.lock = Lock()
20
21 def publish_event(self, event):
22 for subscriber_id, subscriber in enumerate(self._subscritions):
23 subscriber.on_event(event)
24
25 def add_subscribers(self, subscriber: Subscribers):
26 with self.lock:
27 self._subscritions[subscriber.id] = subscriber
28
29 def remove_subscribers(self, subscriber: Subscribers):
30 with self.lock:
31 del self._subscritions[subscriber.id]
32