view grok_interview/thread.py @ 53:82d1fe4d4ee6

[PostDog] Postman but for dogs.
author June Park <parkjune1995@gmail.com>
date Fri, 19 Dec 2025 13:58:37 -0800
parents 68fa88ac73fe
children
line wrap: on
line source

# 1. data struture {}
#    - multiple threads can access it
#    - multiple threads can edit it if it is editable. (mutex)


from hashlib import sha256
from threading import Lock

class Subscribers:
    def __init__(self):
        self.id = sha256()

    def on_event(self, event):
        pass

class Publisher:
    def __init__(self):
        self._subscritions = {}
        self.lock = Lock()

    def publish_event(self, event):
        for subscriber_id, subscriber in enumerate(self._subscritions):
            subscriber.on_event(event)

    def add_subscribers(self, subscriber: Subscribers):
        with self.lock:
            self._subscritions[subscriber.id] = subscriber

    def remove_subscribers(self, subscriber: Subscribers):
        with self.lock:
            del self._subscritions[subscriber.id]