Re: Multithreading: как очередь, но вручную и красиво?
От: antropolog  
Дата: 15.01.26 19:30
Оценка:
Здравствуйте, netch80, Вы писали:

N>Какие есть варианты сделать это красиво без подобных ручных плясок?


кмк если такое действительно уже стало паттерном, то оптимальней будет один раз написать хелпер а-ля InvertedLock c _enter_/_exit_ протоколом, для поддержки with и будет то же самое только raii-like

with self.lock: ## для C++ аналог -- захват лока в конструкторе
    while True:
        if not self.task: ## можно было и с предикатом, если кому удобнее читать
            self.cv.sleep()
            continue
        task = self.task
        self.task = None
        with InvertedLock(self.lock):
            try:
                self.execute(task)
            except Exception:
                ... пожаловались ...
Отредактировано 15.01.2026 19:40 antropolog . Предыдущая версия . Еще …
Отредактировано 15.01.2026 19:35 antropolog . Предыдущая версия .
Отредактировано 15.01.2026 19:33 antropolog . Предыдущая версия .
Отредактировано 15.01.2026 19:31 antropolog . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.