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

Reply via email to