From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24611 invoked by alias); 22 Apr 2005 15:28:41 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 24481 invoked from network); 22 Apr 2005 15:28:27 -0000 Received: from unknown (HELO cgf.cx) (66.30.17.189) by sourceware.org with SMTP; 22 Apr 2005 15:28:27 -0000 Received: by cgf.cx (Postfix, from userid 201) id C4E1413C9AC; Fri, 22 Apr 2005 11:28:27 -0400 (EDT) Date: Fri, 22 Apr 2005 15:28:00 -0000 From: Christopher Faylor To: gdb-patches@sources.redhat.com, Ian Lance Taylor Subject: Re: PATCH: Support Windows in event-loop.c Message-ID: <20050422152827.GI16791@trixie.casa.cgf.cx> Mail-Followup-To: gdb-patches@sources.redhat.com, Ian Lance Taylor References: <01c546a1$Blat.v2.4$e03250c0@zahav.net.il> <4267F742.2090108@codesourcery.com> <01c546b0$Blat.v2.4$c193bb40@zahav.net.il> <20050421205617.GA13146@nevyn.them.org> <426817F0.5070404@codesourcery.com> <01c54714$Blat.v2.4$a1df2140@zahav.net.il> <20050422120803.GD16791@trixie.casa.cgf.cx> <01c5473e$Blat.v2.4$39651f00@zahav.net.il> <20050422145958.GH16791@trixie.casa.cgf.cx> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.8i X-SW-Source: 2005-04/txt/msg00282.txt.bz2 On Fri, Apr 22, 2005 at 11:14:18AM -0400, Ian Lance Taylor wrote: >Christopher Faylor writes: > >> >Or are you saying that WaitForMultipleObjects is not the way to write >> >such an emulation? If so, what system calls are better candidates? >> > >> >FWIW, the Emacs emulation of `select' does work on pipes, so it seems >> >that at least in that case there's code to borrow. >> >> Cygwin's emulation does too, but it doesn't use WaitForMultipleObjects. >> AFAIK, the only way to do non-blocking reads on normal pipes is to poll >> the pipe with the PeekNamedPipe call. It's ugly and painful. > >For what it's worth, Tcl implements an event loop on Windows which >works for all types of objects. The main trick is to create a little >thread which sits around reading the pipe, and raises an event when it >gets something. Of course, you then have to carefully hand that data >over to the main thread when the main thread wants to read from the >pipe. That's roughly how cygwin does it, too. cgf