Closed emaxx-google closed 1 year ago
Sorry, this change was incorrect. We should allow starting a new polling transfer after the previous one has been stopped. I've published an attempt to fix this problem: #119; alternatively, this PR needs to be reverted.
The goal is to make the polling termination (via TAG_IFD_STOP_POLLING_THREAD) actually work even when it's triggered before the InterruptRead has a chance to create and publish the polling_transfer.
Without this patch, in some cases the termination was blocked for 10 minutes, because the thread that does InterruptStop might still see the null polling_transfer meanwhile the other thread is about to start this transfer. The proposed solution is to remember in a separate (atomic) boolean flag whether the termination started, to avoid this kind of race condition.