RE: Issues about server multi-threading on L4Re

李 鼎基 <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <SG2PR06MB2489D7A38F195C61045A1065CB120@SG2PR06MB2489.apcprd06.prod.outlook.com>
Oh yes! Actually I used the version without arguments.
Now I think I can try to fix this problem with the constructor with arguments.

Thank you very much!

From: Jakub Jermar<mailto:[email protected]>
Sent: Friday, September 21, 2018 23:12
To: 李 鼎基<mailto:[email protected]>
Subject: Re: Issues about server multi-threading on L4Re

On 09/21/2018 05:02 PM, 李 鼎基 wrote:
> Actually, I’ve tried to run the server loop in only one thread (a new
> thread created by “pthread_create”, NOT the main thread) on server.
>
> Theoretically, it should perform the same as running the server loop in
> the main thread, but the server still gets stuck.

How did you create your Object_registry / Registry_server - there is a
version for the main thread which has constructor without arguments [0]
and uses the main thread - and then there is a version with a
constructor that takes arguments [1], among which is a server thread.
You need to use the second version to tell it about your new thread. Can
it be that you are using the version without arguments?

[0]
https://l4re.org/doc/classL4Re_1_1Util_1_1Registry__server.html#a694a009623e0bce2faf1d6699cba8720
[1]
https://l4re.org/doc/classL4Re_1_1Util_1_1Registry__server.html#ad88c4355e64763ae2a6948c12d18578c

HTH,
Jakub

>
> ------------------------------------------------------------------------
> *发件人:* l4-hackers <[email protected]> 代表
> Jakub Jermar <[email protected]>
> *发送时间:* Friday, September 21, 2018 10:26:12 PM
> *收件人:* [email protected]
> *主题:* Re: Issues about server multi-threading on L4Re
>
> Hi there!
>
> On 09/21/2018 02:10 PM, 李 鼎基 wrote:
>> I’m trying to implement some multi-threading IPC benchmarks on L4Re.
>> Following the /“shared_ds”**/demo, firstly, I create 8 threads to send
>> IPC on client and receive them all on server’s main thread.
>>
>> The server loops, waits for the requests and handles them in the
>> “dispatch” function. This single-thread server works well.
>>
>>
>>
>> Then I want to create 8 threads in server (so that it can serve the
>> client thread-to-thread).
>>
>> I wrap the “server.loop();” in a “thread_fn” and use “pthread_create” to
>> create more threads, however, the server will get stuck.
>>
>> There are some printings after entering thread_fn so that I can make
>> sure new threads are created and executed except the server.loop part.
>
> I guess the problem is in that you are trying to use the same server
> loop for all your threads. The server loop is associated with a single
> server thread that executes the server objects. In other words, all but
> the thread which is associated with your server loop just block there
> and don't receive any IPC calls.
>
>> In order to serve different requests concurrently, is there any way to
>> create a multi-threading server?
>
> In theory (never tried that myself), you can try giving a separate
> server loop to each of your threads. You will then need to register your
> server object at each of them. The end result should be that your client
> threads are each connected to a different IPC gate which has its own
> bound server thread. All of these gates carry the label of the same
> server object which will be invoked when an IPC call arrives at any of them.
>
> HTH,
> Jakub
>
> --
> Kernkonzept GmbH at Dresden, Germany, HRB 31129, CEO Dr.-Ing. Michael
> Hohmuth
>
> _______________________________________________
> l4-hackers mailing list
> [email protected]
> http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers

--
Kernkonzept GmbH at Dresden, Germany, HRB 31129, CEO Dr.-Ing. Michael
Hohmuth

_______________________________________________
l4-hackers mailing list
[email protected]
http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.