Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail From: Alexander Terekhov Newsgroups: comp.std.c,comp.lang.c,comp.lang.c++,comp.programming.threads Subject: Re: The threading specs in the standard... Date: Wed, 03 Aug 2011 15:50:41 +0200 Organization: A noiseless patient Spider Lines: 31 Message-ID: <4E395231.CC1B7CD1@web.de> References: <97m59uF1nsU1@mid.individual.net> <97mluqFbcvU6@mid.individual.net> <4E16D89D.20302@loria.fr> <4E199F58.70606@loria.fr> <4E1B622A.5090506@loria.fr> <4E1BE0BB.6010100@loria.fr> <4E21471A.8090703@loria.fr> <4E29D154.ED3B37F9@web.de> <4E2A8B4F.2090503@loria.fr> <4E2B12FD.9DB5D265@web.de> Reply-To: terekhov@web.de Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Injection-Info: mx04.eternal-september.org; posting-host="MCbSEzW5qwGLFMNXJh39IQ"; logging-data="16000"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19ZWn4i37jL7fIiPkNkEfCYPJ/Y15HdDYI=" X-Mailer: Mozilla 4.77 [en] (Windows NT 5.0; U) X-Accept-Language: en Cancel-Lock: sha1:8otNoLZzbh5YDdTGP9s2EMfMPfc= Xref: x330-a1.tempe.blueboxinc.net comp.std.c:747 comp.lang.c:9005 comp.lang.c++:8430 comp.programming.threads:484 FYI: http://www.cl.cam.ac.uk/~pes20/cppppc/top.pdf ("Clarifying and compiling C/C++ concurrency: from C++0x to POWER") "Abstract The upcoming C and C++ revised standards add concurrency to the languages, for the first time, in the form of a subtle relaxed memory model (the C++0x model). This aims to permit compiler optimisation and to accommodate the differing relaxed-memory behaviours of mainstream multiprocessors, combining simple semantics for most code with high-performance low-level atomics for concurrency libraries. We make two contributions: We first establish two simpler but provably equivalent models for C++0x, one for the full language and another for the subset without consume operations. Subsetting further to the fragment without low-level atomics, we identify a subtlety arising from atomic initialisation. We then prove our main result, the correctness of a proposed compilation scheme of the C++0x concurrency primitives to POWER assembly, having noted that an earlier proposal was flawed. (The main ideas apply also to ARM, which has a similar relaxed memory architecture.) This should inform the ongoing development of production compilers for C++0x and C1x, clarifies what properties of the machine architecture are required, and builds confidence in the C++0x and POWER semantics." regards, alexander.