(
reader_index: int,
lock_file: str,
release_count: Synchronized[int],
start_signal: EventType,
release_signal: EventType,
next_reader_signal: EventType | None,
writer_or_prev_signal: EventType,
)
| 173 | |
| 174 | |
| 175 | def chain_reader( |
| 176 | reader_index: int, |
| 177 | lock_file: str, |
| 178 | release_count: Synchronized[int], |
| 179 | start_signal: EventType, |
| 180 | release_signal: EventType, |
| 181 | next_reader_signal: EventType | None, |
| 182 | writer_or_prev_signal: EventType, |
| 183 | ) -> None: |
| 184 | start_signal.wait(timeout=10) |
| 185 | |
| 186 | lock = ReadWriteLock(lock_file) |
| 187 | with lock.read_lock(): |
| 188 | if reader_index > 0: |
| 189 | # delay so writer can attempt acquisition while readers overlap |
| 190 | time.sleep(2) |
| 191 | |
| 192 | if next_reader_signal is not None: |
| 193 | next_reader_signal.set() |
| 194 | |
| 195 | if reader_index == 0: |
| 196 | # first reader holds lock briefly then signals writer |
| 197 | time.sleep(1) |
| 198 | |
| 199 | writer_or_prev_signal.set() |
| 200 | |
| 201 | release_signal.wait(timeout=10) |
| 202 | |
| 203 | with release_count.get_lock(): |
| 204 | release_count.value += 1 |
| 205 | |
| 206 | |
| 207 | @pytest.mark.timeout(40) |
nothing calls this directly
no test coverage detected
searching dependent graphs…