Re: How to talk to a specific thread in a server
Yuxin Ren <[email protected]>
| Newsgroups | gmane.comp.micro-kernel.l4.devel |
|---|---|
| Message-ID | <CAAKbDrfL6C+ScetTC+kc4A+GHhznwOGX3YE3MpJz=889DNLhLw@mail.gmail.com> |
Thanks a lot. I solved this problem finally. Instead of using register server, each thread creates a ipc_gate and manually binds itself to that ipc_gete. It works well now. On Thu, May 8, 2014 at 3:03 PM, Björn Döbel <[email protected]>wrote: > Could you share your client and server's code? > > Bjoern > > Am 08.05.2014 21:02, schrieb Yuxin Ren: > > Year, > > I did those thing. Each server tread has its own server obj and register > > server instance, and it calls register_obj() and server.loop() on their > own. > > But this does not work. And actually the master thread in server always > > receives all requests. When I let the master thread to spin, the server > > cannot > > receive any request, even though other threads in server block on the > > server.loop() function. > > I am really confused about it. > > > > Thank you. > > > > > > On Thu, May 8, 2014 at 12:22 PM, Björn Döbel < > [email protected]>wrote: > > > > 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 < > [email protected]> > > 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 > >>>> [email protected] > >>>> 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 > >> > >> > > > > > _______________________________________________ > l4-hackers mailing list > [email protected] > http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers > _______________________________________________ l4-hackers mailing list [email protected] http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers