Такая проблема - нуна блокировка объекта обеспечиввающее совместное чтение и уникальную запись. На пионе. Я что то сделал, но возник вопрос, то ли, пполез копать исходники - концы ушли в so моудль, исходников к-го я что то не найду... но боюсь что они мне и не помогут:-)
Может кто подскажет, как реализовано это дело на пальцах? На флагах руками или средствами ОС специяльными? :-) И насколько допустимо в таки вопромах полагаться на свои флаги /счетчики, если работа с ними всыделена в CriticalSection?
Вот что на пионе получилось: class _locked: def __init__(self, *L, **D): self.lock, self.read_lock_counter = thread.allocate_lock(), 0 ..... def _run_under_read_lock(self, func, L, D) : self.lock.acquire() self.read_lock_counter += 1 self.lock.release() try: return apply(func, L, D) finally: self.read_lock_counter -= 1 def _run_under_full_lock(self, func, L, D) : self.lock.acquire() while self.read_lock_counter > 0 : pass try: return apply(func, L, D) finally: self.lock.release() .....