[Interest] QThread

Bob Hood bhood2 at comcast.net
Mon Mar 24 17:43:19 CET 2014


On 3/24/2014 9:53 AM, Koehne Kai wrote:
>
>> -----Original Message-----
>> From: interest-bounces+kai.koehne=digia.com at qt-project.org
>> [mailto:interest-bounces+kai.koehne=digia.com at qt-project.org] On Behalf Of
>> Bob Hood
>> Sent: Monday, March 24, 2014 4:49 PM
>> To: Thiago Macieira; interest at qt-project.org
>> Subject: Re: [Interest] QThread
>>
>> [...]
>> I actually use the "volatile" tag to tell the compiler that it cannot optimize (i.e.,
>> make compile-time assumptions about) the variable that it decorates.
>> Does std::atomic have the same meaning for optimizations?  I can't get a clear
>> picture of this by a (cursory) Google.
> To cite
> https://stackoverflow.com/questions/12878344/volatile-in-c11
>
> " Now, let's look at what C++11 says about volatile int x;. If you put that in there, and you have some other thread mess with x, you still have undefined behavior. Volatile does not affect threading behavior. C++11's memory model does not define reads or writes from/to x to be atomic, nor does it require the memory barriers needed for non-atomic reads/writes to be properly ordered. volatile has nothing to do with it one way or the other.
>
> Oh, your code might work. But C++11 doesn't guarantee it.
>
> What volatile tells the compiler is that it can't optimize memory reads from that variable. However, CPU cores have different caches, and most memory writes do not immediately go out to main memory. They get stored in that core's local cache, and may be written... eventually."

Thanks a bunch, Kai.



More information about the Interest mailing list