X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-10.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI X-Spam-Check-By: sourceware.org From: "Schmidt, Oliver" To: "cygwin AT cygwin DOT com" Date: Tue, 9 Mar 2010 11:08:22 +0100 Subject: RE: Cygwin 1.7: Concurrency Issue with Shared State Initialization Message-ID: References: <20100308195656 DOT GA17237 AT ednor DOT casa DOT cgf DOT cx> In-Reply-To: <20100308195656.GA17237@ednor.casa.cgf.cx> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Hi Christopher, Fist of all thanks for your immediate feedback :-) >> /* Initialize installation root dir. */ >> if (!installation_root[0]) >> init_installation_root (); > I'll check in something tonight which attempts to solve this problem. Thanks in advance. > It's a somewhat tricky problem because adding a mutex here would slow > down every invocation of a cygwin program and we don't want to add to > the "Why is Cygwin so slow???" scenarios if we can help it. I understand your concern for sure ;-) Maybe that's the very thing you're thinking about but ... AFAIK a spinlock = is the usual paradigm in scenarios where one doesn't anticipate contention = but needs to be aware of it 'just in case'. With InterlockedCompareExchange= () and Sleep() it should be quite simple to create one that's very efficien= t in the usual scenario. Regards, Oliver -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple