win32: make thread killed flag atomic
authorRémi Denis-Courmont <remi@remlab.net>
Fri, 27 May 2016 18:38:51 +0000 (21:38 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Fri, 27 May 2016 18:42:20 +0000 (21:42 +0300)
commitf2f32ee7fa693490a6559dd632075586e451bc92
tree6e41e8013d1eba190415fcad6949479ec900d528
parent9503a2c7de45968703e9f3c0ba68bc3a65fccd82
win32: make thread killed flag atomic

Setting the flag in APC had the benefit of not needing atomicity, but
it meant the flag only got set at the next opportunity to run APC's.

Especially vlc_testcancel() is not an alertable function, so it would
typically be slower. If the thread did not go to alertable sleep, then
vlc_testcancel() would not work at all.

Since vlc_cancel() and vlc_testcancel() do not imply any memory
barriers, the loads and stores can be relaxed. That removes most if not
all of the overhead of the atomic operations.
src/win32/thread.c