On Mon, Oct 29, 2007 at 02:39:15 -0000, Dave Korn wrote: > BTW, you and Tomash should get your stories in synch. He says speculative > loads are ok, just no stores, and wants a kind of half-volatile flag that > would only suppress stores. I think you're already looking one step further > down the road than he is and have realised that speculative loads will give > you problems too.
You don't do your homework. This pointer http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2338.html (which was already posted in this thread) explains the matter, see "Speculative code motion involving loads" section. So both David and me are correct. But curious, Bart already tried _several times_ to explain why using volatile is not an option, but his arguments seem to be too "inconvenient" to be considered. Let me repeat: suppose we agree that every shared data should be annotated as volatile. So if I want to share dynamic data, I have to write _volatile_ data_type *pdata = malloc(size); But how to use this data? There are not many library functions that accept pointer to volatile (and casting the qualifier away will bring us back to the start). Should every library function have 2^n copies where different combinations of parameters are annotated as volatile? I think most pro-volatile people didn't understood the meaning of several papers in the Internet that say you have to use volatile. Those papers never meant to say that volatile is a proper way to use shared data with POSIX threads, rather that because the compilers are made the way they are you have to use volatile for now to overcome compiler thread-unawareness. David R. Butenhof was the member of POSIX.1c (POSIX Threads) committee. In his book, "Programming with POSIX Threads", there are no volatiles at all. Of course one can say he didn't grok C, or even POSIX, or POSIX Threads. But it shows the intent, at least how he felt it. And this is the way to go: in sane world standards follow the reality, not the other way around. And they will, that's why the work of Hans Boehm is there. As it was already mentioned in this thread, while his proposal is not final yet, most of the work is being done on atomics, so it highly unlikely that "no-speculative-stores-please" requirement will change. -- Tomash Brechko