Concurrency Coordination Reports
Future State Coordination Report
Complete a future with a deterministic result and inspect its done state.
future result
A `concurrent.futures.Future` holds a result once `set_result` runs, so reading `done` and `result` reports the settled state without waiting on a worker.
Future State Coordination Report
future_state_coordination_report.py
Replay: real traced execution (multi-file project)
from concurrent.futures import Future
seed = 3
task = Future()
task.set_result(seed * 2 + 1)
done = task.done()
result = task.result()
status = "small" if result <= 3 else "mid" if result <= 9 else "large"
print("seed=" + str(seed) + " done=" + str(done) + " result=" + str(result) + " status=" + status)
from concurrent.futures import Future
seed = 1
task = Future()
task.set_result(seed * 2 + 1)
done = task.done()
result = task.result()
status = "small" if result <= 3 else "mid" if result <= 9 else "large"
print("seed=" + str(seed) + " done=" + str(done) + " result=" + str(result) + " status=" + status)
from concurrent.futures import Future
seed = 6
task = Future()
task.set_result(seed * 2 + 1)
done = task.done()
result = task.result()
status = "small" if result <= 3 else "mid" if result <= 9 else "large"
print("seed=" + str(seed) + " done=" + str(done) + " result=" + str(result) + " status=" + status)
seed ← 3, task ← <Future at ⟨addr A⟩ state=pending>, done ← True
4seed→ 3 = 3 #@seed=1, 65task→ <Future at ⟨addr A⟩ state=pending> = Future()6task→ <Future at ⟨addr A⟩ state=finished returned int>.set_result(seed3 * 2 + 1)78done→ True = task<Future at ⟨addr A⟩ state=finished returned int>.done()9result→ 7 = task<Future at ⟨addr A⟩ state=finished returned int>.result()10status→ mid = "small" if result7 <= 3 else "mid" if result <= 9 else "large"1112print("seed=" + str(seed3) + " done=" + str(doneTrue) + " result=" + str(result7) + " status=" + statusmid)outputseed=3 done=True result=7 status=mid
seed ← 1, task ← <Future at ⟨addr A⟩ state=pending>, done ← True
4seed→ 1 = 15task→ <Future at ⟨addr A⟩ state=pending> = Future()6task→ <Future at ⟨addr A⟩ state=finished returned int>.set_result(seed1 * 2 + 1)78done→ True = task<Future at ⟨addr A⟩ state=finished returned int>.done()9result→ 3 = task<Future at ⟨addr A⟩ state=finished returned int>.result()10status→ small = "small" if result3 <= 3 else "mid" if result <= 9 else "large"1112print("seed=" + str(seed1) + " done=" + str(doneTrue) + " result=" + str(result3) + " status=" + statussmall)outputseed=1 done=True result=3 status=small
seed ← 6, task ← <Future at ⟨addr A⟩ state=pending>, done ← True
4seed→ 6 = 65task→ <Future at ⟨addr A⟩ state=pending> = Future()6task→ <Future at ⟨addr A⟩ state=finished returned int>.set_result(seed6 * 2 + 1)78done→ True = task<Future at ⟨addr A⟩ state=finished returned int>.done()9result→ 13 = task<Future at ⟨addr A⟩ state=finished returned int>.result()10status→ large = "small" if result13 <= 3 else "mid" if result <= 9 else "large"1112print("seed=" + str(seed6) + " done=" + str(doneTrue) + " result=" + str(result13) + " status=" + statuslarge)outputseed=6 done=True result=13 status=large