N threads share ONE encoder; distinct objects. markers/key_memo races.
()
| 320 | |
| 321 | |
| 322 | def scenario_shared_encoder_distinct_inputs(): |
| 323 | """N threads share ONE encoder; distinct objects. markers/key_memo races.""" |
| 324 | encoder = _make_shared_encoder() |
| 325 | |
| 326 | def make_worker(tid): |
| 327 | def worker(): |
| 328 | deadline = time.monotonic() + DURATION |
| 329 | for i in range(ITERATIONS): |
| 330 | obj = _make_distinct_object(tid * 1_000_000 + i) |
| 331 | try: |
| 332 | encoder(obj, 0) |
| 333 | except Exception: |
| 334 | pass |
| 335 | if time.monotonic() > deadline: |
| 336 | break |
| 337 | return worker |
| 338 | |
| 339 | run_scenario( |
| 340 | "shared encoder, distinct inputs (markers / key_memo races)", |
| 341 | [make_worker(i) for i in range(THREADS)], |
| 342 | [1] * THREADS, |
| 343 | ) |
| 344 | |
| 345 | |
| 346 | def scenario_shared_encoder_shared_dict(): |
nothing calls this directly
no test coverage detected
searching dependent graphs…