How to talk to a specific thread in a server

Björn Döbel doebel at os.inf.tu-dresden.de
Thu May 8 18:22:40 CEST 2014


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Am Do 08 Mai 2014 18:17:54 CEST schrieb Yuxin Ren:
> HiThank you very much for your reply.I did what you said, but the behavior is very confusing.I create two channels in lua script, and correspond each channel to a pair of client and server threads.
> In the server side, each thread registers its own server obj to its own Registry_server, and of course they have different dispatch functions.Now the result is only one server thread receive all requests from client, and it selects different dispatch function to run based on the request.
> But I want different threads to run different dispatch function, not only one server thread process all requests using different dispatch functions.Do you have any ideas about this?Thank you.
> On Thu, May 8, 2014 at 2:07 AM, Björn Döbel <doebel at os.inf.tu-dresden.de> wrote:
>
> ********* *ANFANG des verschlüsselten oder unterschriebenen Bereichs* *********
>
> Hi,
>
> On 08.05.2014 03:29, Yuxin Ren wrote:
>> I have one client and one server talking to each other, and both of
>> them have 2 threads. I want thread 1 in client only talk to thread
>> 1 in server, and thread 2 in client only talk to thread 2 in
>> server. How can I achieve this?
>
> The simple client/server example
> (http://wiki.tudos.org/L4Re_simple_client_server_example) shows how to
> connect a single thread in each process (or task in L4 speak). You
> could extend this example to create two channels in the Lua setup
> file, pass both channels to the tasks during startup and then let each
> thread use one of them for communication with its counterpart.
>
> Note that does not completely enforce your requirement that each
> thread can only talk to exactly one other. Capabilities (e.g., for the
> communication channels) are shared per task and technically each
> thread could therefore send messages on each channel. If you want
> strict isolation, you have to separate the threads into separate tasks.
>
> Bjoern
>
>
> ********* *ENDE des verschlüsselten oder unterschriebenen Bereichs* *********
>
> _______________________________________________
> l4-hackers mailing list
> l4-hackers at os.inf.tu-dresden.de
> http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
>
>
>
>

Quick guess: your separate threads need to call the register_obj()
function and the server.loop() functions on their own. (You also need
two independent instances of the Server_object.)

Bjoern
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Icedove - http://www.enigmail.net/

iEYEARECAAYFAlNrr1AACgkQP5ijxgQLUNmCXACeJ0BFwWWx4jWHcl4iufwZ2v0D
tcwAoJg9Cs43LR7A0A9UjvV1KOhgwtnA
=iz12
-----END PGP SIGNATURE-----





More information about the l4-hackers mailing list