Re: MSDN volatile sample



Thanks Alex,


1.

You are correct. Now I am confused about the MSDN sample. What is it
purpose? Telling us we have to put volatile keyword to thread sharing data to
make program function well as designed? In my past experience, I have never
used volatile to all shared data between threads.

2.

Now I strongly suspect whether compiler will generate any wrong code --
functional wrong code. In MSDN sample, variable Sentinel is used to act as a
shared variable between thread1 and thread2. Compiler should guarantee that
both threads can read/write the correct value of Sentinel.

It seems that volatile will make wrong optimization to prevent thread1 from
reading the most recent correct value set by thread2? I think it will bring
high risks to careless developers, who does not know about volatile and
forget to put it ahead of the variable, which will result in the wrong
optimization of compiler.

What is your perspective on such optimization?


regards,
George

"Alex Blekhman" wrote:

"George" wrote:
Could you provide a link to your quoted Sleep method description
please?

I am reading from,

http://msdn2.microsoft.com/en-us/library/d00bd51t(VS.80).aspx

not the same as you quoted.

You're reading in the wrong place. Didn't you noticed that this
page belongs to .NET framework documentation? It has nothing to do
with Win32 API function `Sleep'.

"Sleep"
http://msdn2.microsoft.com/en-us/library/ms686298(VS.85).aspx

Alex



.



Relevant Pages

  • Re: MSDN volatile sample
    ... Now I am confused about the MSDN sample. ... Telling us we have to put volatile keyword to thread sharing data ... It seems that volatile will make wrong optimization to prevent thread1 ... reading the most recent correct value set by thread2? ...
    (microsoft.public.vc.language)
  • Re: MSDN volatile sample
    ... CriticalData modification is visible before Sentinel is set. ... The volatile keyword is working on Sentine, ... Now I am confused about the MSDN sample. ...
    (microsoft.public.vc.language)
  • Re: MSDN volatile sample
    ... The compiler is not allowed to optimize Sentinel check out of the loop, ... volatile or not. ... Now I am confused about the MSDN sample. ...
    (microsoft.public.vc.language)
  • Re: [PATCH] "volatile considered harmful" document
    ... "Volatile is often used to prevent optimization, ... +safe (spinlocks, mutexes, memory barriers, etc.) are designed to prevent ... +primitives act as memory barriers - they are explicitly written to do so - ...
    (Linux-Kernel)
  • Re: [PATCH] "volatile considered harmful" document
    ... Just tell the reasons why volatile is bad and what should be used instead, ... "Volatile is often used to prevent optimization, ... Access to data must be protected and handled with kernel provided synchronization, ... +primitives act as memory barriers - they are explicitly written to do so - ...
    (Linux-Kernel)

Loading