popol icon indicating copy to clipboard operation
popol copied to clipboard

Fix `test_waker_threaded`

Open danielparks opened this issue 2 years ago • 0 comments

This fixes a few race conditions in test_waker_threaded() and adds a timeout to ensure that it doesn’t hang forever if something goes wrong.

Some notes:

  • It is always possible to have messages on the channel after the thread has finished, since the thread could write a message and finish between the call to poll() and the start of the next loop.
  • reset() could swallow the last wake.
  • It is possible to get either timeouts or events from poll() after the thread finishes. I’m not sure how it gets more events, but when I only checked for is_finished() when getting a timeout, it sometimes hung forever.

Fixes: #19 — test_waker_threaded fails or hangs in Rust 1.70

danielparks avatar Jul 08 '23 22:07 danielparks