asynchronous socket writing
Maarten Foqué
maarten.foque at edchq.com
Thu Mar 11 10:35:32 CET 2010
If this is your first go with C and sockets, I suggest you leave the
multi-threaded thing be for a while.
To use libev and socket you first want to understand how it works or you
may end up rewriting your application.
For libev I suggest looking at the documentation and starting with a
simple timer watcher and idle watcher, see how it works.
For sockets try something simple to exchange some data with a program in
a language you know. Also take a good look at the ioctl and fcntl
functions. These can put a socket in non_blocking mode, or tell you
that a socket has bytes ready for reading.
I'm using libev as a socket_server on one end and to listen for notifies
from the db on the other end.
This works much faster than I need and doesn't require any threading.
regards,
Maarten
On Wed, 2010-03-10 at 19:15 +0100, Jonas H. wrote:
> Hello there,
>
> I'm currently taking my first steps in socket/C programming and I
> want to implement a fast, multi-threaded web server for testing purpose.
> I decided to have a single accept/listen/whatever thread for now.
> However, I want asynchronous read at write (at least write).
>
> So the question is: How do I implemented asynchronous I/O?
> (Maybe this isn't /too/ libev specific but more a general question.)
>
> If I get things right, the UNIX `read`/`recv` and `write`/`send`
> aren't non-blocking/asynchronous. Putting the write stuff into an own
> thread does not change anything. Did I get something wrong?
>
> I'm grateful for any tips. Thanks! :-)
>
> Jonas
>
> _______________________________________________
> libev mailing list
> libev at lists.schmorp.de
> http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev
More information about the libev
mailing list