Re: [gnet-devel] echoserver.exe cause 100% CUP time on WinXP
- From: "Kuang-Chun Cheng" <kcc1967 gmail com>
- To: "Dov Grobgeld" <dov grobgeld gmail com>
- Cc: gnet-devel-list gnome org
- Subject: Re: [gnet-devel] echoserver.exe cause 100% CUP time on WinXP
- Date: Thu, 17 Apr 2008 23:47:43 +0800
On Thu, Apr 17, 2008 at 5:15 AM, Kuang-Chun Cheng <kcc1967 gmail com> wrote:
> Hi,
>
> I think I found the problem.
> In $GNET_2_0_8/src/iochannel.c, function gnet_io_channel_readn()
> use glib call, g_io_channel_read() ... this API cause 100%CPU problem
> under Win32.
Sorry for wrong information, replacy g_io_channel_read() by
newer g_io_channel_read_chars() WILL NOT fix the 100%CPU problem.
I put a g_usleep() in my test program, and I forgot I did that before :-(
So, I still can't find what's going on here.
All I knew is g_io_channel_read() or g_io_channel_read_chars() will not block
on Win32 ... and this make gnet_io_channel_readline() in echoserver.c goes
into a busy loop.
I check glib manual and found:
g_io_channel_win32_new_socket ()
...
Polling a GSource created to watch a channel for a socket puts the
socket in non-blocking mode. This is a side-effect of the
implementation and unavoidable.
...
Could this be the problem ?
Or it's just the "feature" of gnet under Win32 ?
KC
>
> I'm using glib-2.16.3, and since the document of glib said that
> g_io_channel_read() was deprecated since v2.2 ... so I simply change
> g_io_channel_read() to g_io_channel_read_chars() ...
> and the 100% CPU problem under Win32 goes away.
>
> Can someone confirm this. I can make a patch if anyone is
> interesting with this
> fix (or work around). But since g_io_channel_read() return GIOError, and
> g_io_channel_read_chars() return GIOStatus. With return value of
> gnet_io_channel_readn() will also change ... don't know if this break anything
> else. FYI.
>
>
> Regards,
> KC
>
>
>
>
>
>
> On Fri, Apr 11, 2008 at 3:44 PM, Kuang-Chun Cheng <kcc1967 gmail com> wrote:
> > Thanks, I will check that.
> >
> >
> > Best Regards
> > KC
> >
> >
> >
> > On Fri, Apr 11, 2008 at 3:37 PM, Dov Grobgeld <dov grobgeld gmail com> wrote:
> > > Hi Kuang-Chan,
> > >
> > > I remember having a similar problems a few years back, but I forgot how I
> > > solved it! But what I do know is that my xmlrpc-server code in the gnet
> > > tarball is working on windows. Perhaps it can be of help to get your server
> > > to work.
> > >
> > > Regards,
> > > Dov
> > >
> > >
> > >
> > > On 11/04/2008, Kuang-Chun Cheng <kcc1967 gmail com> wrote:
> > > >
> > > >
> > > >
> > > > Hi,
> > > >
> > > > I had build gnet-2.0.8 by using cross mingw compiler under Linux.
> > > > And I found even the simple "echoserver.exe" will cause 100% CPU time
> > > > under WinXP when client connected to it (after accept return ...)
> > > >
> > > > I checked gnet-2.0.7 which also had the similar problem.
> > > >
> > > > gnet client did not have such probem, only server (GTcpSocket server).
> > > >
> > > > I don't know if it's my cross mingw problem, glib2 problem or gnet2
> > > problem.
> > > > Does anyone can suggest where should I looking at.
> > > > Any code in gnet2 might use 100% CPU when "accept" return ?
> > > >
> > > > I will start looking at the source code of gnet2 ... and hopefully
> > > > also can get some
> > > > information from here. Thanks
> > > >
> > > > Best Regards,
> > > > KC
> > > > _______________________________________________
> > > > gnet-devel-list mailing list
> > > > gnet-devel-list gnome org
> > > > http://mail.gnome.org/mailman/listinfo/gnet-devel-list
> > > >
> > >
> > >
> >
>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]