Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.albasani.net!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail From: Alexander Terekhov Newsgroups: comp.programming.threads Subject: Re: cond signal wait Date: Wed, 25 May 2011 19:16:00 +0200 Organization: A noiseless patient Spider Lines: 29 Message-ID: <4DDD3950.81DEDF32@web.de> References: <87aaebte7o.fsf@justsoftwaresolutions.co.uk> <98cd47de-73d9-48e9-ac18-cc01cac1bb48@z7g2000prh.googlegroups.com> <87lixubzfu.fsf@justsoftwaresolutions.co.uk> <87hb8ibwur.fsf@justsoftwaresolutions.co.uk> 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="4807"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/Dxsm2m3JBFmJo4O6ydtHj2cOAGp7tb1I=" X-Mailer: Mozilla 4.77 [en] (Windows NT 5.0; U) X-Accept-Language: en Cancel-Lock: sha1:GqmenhkXAzDCUVl6Qjs1cEvnw5E= Xref: x330-a1.tempe.blueboxinc.net comp.programming.threads:191 Anthony Williams wrote: [...] > void signaller() > { > lock mutex; > // if we get here, waiter() hasn't yet executed **A** > // or is blocked in **B**, so will be woken by signal > // or has executed line **C** so doesn't care about signal > mark data as ready; > signal condvar; > unlock mutex; > } lock mutex; // if we get here, waiter() hasn't yet executed **A** // or is blocked in **B**, so will be woken by signal // or has executed line **C** so doesn't care about signal mark data as ready; unlock mutex; signal condvar; is the regular case. signalling prior to unlock is special. regards, alexander.