Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe@cygwin.com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-help@cygwin.com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
Delivered-To: mailing list cygwin@cygwin.com
Date: Sat, 26 Jun 2004 13:41:45 -0400
From: "Pierre A. Humblet" <pierre.humblet@ieee.org>
To: cygwin@cygwin.com
Subject: Re: higher-level IO very slow with cygwin1.dll 5.10 (due to set_flags?)
Message-ID: <20040626174145.GA1032441@hpn5170x>
Mail-Followup-To: "Pierre A. Humblet" <pierre.humblet@ieee.org>, cygwin@cygwin.com
References: <opr96vbqwilh6y6a@localhost> <20040626154504.GA961349@hpn5170x> <20040626160554.GA980221@hpn5170x> <20040626170940.GD20063@trixie.casa.cgf.cx>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20040626170940.GD20063@trixie.casa.cgf.cx>
User-Agent: Mutt/1.4.1i

On Sat, Jun 26, 2004 at 01:09:40PM -0400, Christopher Faylor wrote:
> On Sat, Jun 26, 2004 at 12:05:54PM -0400, Pierre A. Humblet wrote:
> >Beware, I found this:
> >2000-05-19  DJ Delorie  <dj@cygnus.com>
> >	* libc/include/stdio.h: no getc/putc macros for cygwin; causes
> >	compatibility issues with different dll versions
> >so you may need to recompile when updating cygwin.
> 
> Also wouldn't that work around the file locks that were ostensibly put
> there for a reason?

That crossed my mind. But there is no file lock in the macro, which is
used by systems other than cygwin. How do they manage it?
I also assume that single threaded programs don't need the lock.

I would be perfectly happy to have a thread-unsafe getc/putc macro,
and to use fgetc/fputc when I care about multithreading.

Digging deeper, I see there is a function getc_unlocked. Using it
instead of getc improves the speed by a factor 5. 
Now that I know about it, I will redefine getc to getc_unlocked when
porting single threaded applications.

That issue may be a factor in the legendary slowness of Cygwin.

Pierre

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

