On 10/22/12 07:21, d3fault wrote: > volatile bools work I wasn't able to find a context for this, but in general, this is not true. Declaring a variable volatile does *not* make it suitable to be used as a synchronization primitive across threads. As a side effect, it might also make the code run slower.
According to my understanding, the reason for this is the C++ memory model (or lack thereof); while volatile might look like a great way to force an "always load stuff from memory" approach, it does not impose a particular ordering of the read/write operations, so the compiler/CPU/memory controller/... are actually allowed to reorder access to other memory regions (and they really do that). That's not what you want to do. In general -- like cryptography, synchronization of multithreaded operations is hard, and it's best not to invent "creative" ways of doing that unless you are an expert. Use the high-level operations at first, and if you are attracted to tinkering with the low-level bits, read a good book before you do so. I can only recommend Anthony Williams' C++ Concurrency in Action. This is not directed to d3fault in particular, it's a general advice about not messing with threads. Cheers, Jan -- Trojita, a fast e-mail client -- http://trojita.flaska.net/ _______________________________________________ Interest mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/interest
