This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Optimization of conditional access to globals: thread-unsafe?

On Fri, Oct 26, 2007 at 08:32:07 -0700, Ian Lance Taylor wrote:
> The language standard does not forbid speculative stores to non-atomic
> objects.

That's why there's a proposal to refine the language.  I was meaning
the folloing:

  Hans Boehm and Herb Sutter both presented very detailed and
  well-thought out memory models. Their differences are subtle and
  important, but in broad strokes, both proposals paint a similar
  picture. In particular, both proposals:

      * Specify a set of atomic (aka, interlocked) primitive operations.
      * Explicitly specify the ordering constraints on atomic reads and writes.
      * Specify the visibility of atomic writes.
      * Disallow speculative stores on potentially shared objects.
      * Disallow reading and re-writing of unrelated objects. (For
        instance, if you have struct S{ char a,b; }; it is not OK to
        modify b by reading in the whole struct, bit-twiddling b, and
        writing the whole struct because that would interfere with
        another thread that is trying to write to a.)

So, will "potentially shared objects" be marked as such explicitly by
the programmer, or is it a compiler job to identify them?

   Tomash Brechko

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]