Luồng drain của PR 3677 và vị trí 3 comment

Luồng drain của PR 3677 và vị trí 3 comment A workflow diagram generated by Archify. 01 / Caller (mọi thread) 02 / Chủ lock (một thread) 03 / Nguồn (Subscription) request(n) · requested += n · Caller (mọi thread) request(n) requested += n cancel() / switchTo(next) · cancelled = true, pending = next · Caller (mọi thread) · comments 1 và 2 cancel() / switchTo(next) cancelled = true, pending = next comments 1 và 2 drain() · tryAcquireLock · Chủ lock (một thread) drain() tryAcquireLock Áp dụng việc chờ · lấy pending, cancel hoặc request · Chủ lock (một thread) · comment 3 Áp dụng việc chờ lấy pending, cancel hoặc request comment 3 releaseLock() · còn việc? lặp lại · Chủ lock (một thread) releaseLock() còn việc? lặp lại source.request(delta) · chạy trong lock · Nguồn (Subscription) source.request(delta) chạy trong lock source.cancel() · chạy trong lock · Nguồn (Subscription) · comment 1 source.cancel() chạy trong lock comment 1 lấy được lock còn việc: lặp lại Legend Agent logic Context / trace Cloud service External system