On Sat, 30 Jan 2021 05:10:07 GMT, Prasanta Sadhukhan <psadhuk...@openjdk.org> wrote:
>>> Does this volatile modifier resolve the now-removed infinite loop in `while >>> (!tk.IsDisposed())` in `WToolkit_shutdown`? >> >> The loop should not be removed. > > Unfortunately, volatile modifier has no effect if infinite loop is > reinstated.. > > Does this volatile modifier resolve the now-removed infinite loop in `while > > (!tk.IsDisposed())` in `WToolkit_shutdown`? > > The loop should not be removed. No, it should not, as you noted previously. However, making `m_breakMessageLoop` volatile does not look right either. If `QuitMessageLoop` is called from `!IsMainThread()` thread, it is posted as a message to run on the correct thread. Thus `m_breakMessageLoop` should be accessed on a single thread only; if it's the case, volatile is unneeded. And @prsadhuk's latest test confirms it. There must be something else⦠------------- PR: https://git.openjdk.java.net/jdk/pull/2220