In general, with GIO, you don't need to run anything in a subprocess.
Keeping it single-threaded and let async I/O dictate your concurrence
model.

One really nice way to scale on multi-core is to notably use
subprocesses through fork. Once you listen, you can fork before
launching loops.

    server.listen_local (8080);

    Posix.fork (); // 2
    Posix.fork (); // 4
    Posix.fork (); // 8 process

    new MainLoop ().run ();

They now all share a common file descriptor for the listening interface
and the kernel will perform load balancing across the workers for free.
I managed to scale an application on 64 cores this way ;) reaching
~100k req/sec this way.

Good luck,

Le mercredi 21 septembre 2016 à 15:21 +0100, Baptiste Gelez a écrit :
> Hi everyone,
> 
> I'm creating a little app that should be able to communicate with
> other 
> processes (both sending and receiving messages). I first tried to do
> it 
> by launching child processes and sending/receving messages with 
> stdout/stdin. But I didn't find how to receive a signal when the
> child 
> process is writing on his stdout.
> 
> Then, I tried with websockets. I use the libsoup solution. This is
> my 
> code :
> 
> const uint16 port = 8080;
> 
> InetAddress address = new InetAddress.loopback (SocketFamily.IPV4);
> InetSocketAddress inetaddress = new InetSocketAddress (address,
> port);
> 
> GLib.Socket socket = new GLib.Socket (SocketFamily.IPV4, 
> SocketType.STREAM, SocketProtocol.TCP);
> socket.bind (inetaddress, true);
> socket.listen ();
> 
> Server serv = new Server (null);
> serv.add_websocket_handler (null, null, null, (server, conn, path, 
> client) => {
>      conn.message.connect ((type, message) => {
>              // receive messages en responds ...
>          });
>      });
> serv.listen_socket (socket, 0);
> 
> But when I try to connect to ws://localhost (with JavaScript) it
> tells 
> me "Firefox can't establish a connection with the server at the
> address 
> ws://localhost/."
> 
> Valadoc and libsoup C documentation are really poor on Websockets.
> Can 
> you help me to find where is the problem, and how to solve it,
> please. 
> Or at least, giving me some example codes of websocket servers with 
> libsoup (I can't find any). Thank you.
> 
> Baptiste.
> _______________________________________________
> vala-list mailing list
> vala-list@gnome.org
> https://mail.gnome.org/mailman/listinfo/vala-list
-- 
Guillaume Poirier-Morency <guillaumepoiriermore...@gmail.com>

Étudiant au baccalauréat en Informatique à l'Université de Montréal
Chercheur boursier à l'IRIC

Mon blog: https://arteymix.github.io/
Clé PGP: B1AD6EA5
_______________________________________________
vala-list mailing list
vala-list@gnome.org
https://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to