Tiago Jorge wrote on 05/02/05 15:37 this:
I will try to describe the scenario as I understood it: There exist:
- The Flips Server (F)
- The Server (S) with one server thread
- One or more Clients (C1, C2, ...).
Now C1 calls S, which receives the message, decodes it, calls your server function, makes a call to F and blocks, waiting for the reply from F. The C2 tries to call the same server S.
If this is correct, then yes, C2 and all following clients will block, because the server-thread is blocked waiting for F.
nop. the problem is that S blocks when doing the call to F with no reason. But when i removed the call from C1 to S (that is blocked waiting the IPC response from S), S did the F IPC with no problem... So it is S that is blocked when doing the ipc_send call to F, not waiting for the answer, because the request never arrives to the F server.
So, the non-blocking szenario is: - no client does send any message to S. - S (magically*) sends a message to F and receives a reply (**)
* how is this request initiated if not by a client? ** let us try to stay with the L4 speech: - an "IPC send" is an IPC from thread T1 to T2 without an immediate reply - an "IPC call" is an IPC from thread T1 to T2 and T1 atomically waits for a reply from T2 (i.e. is blocked until T2 sends the reply). - so, if you remove "the ipc_send call to F" what do you mean in L4 speech?
And the blocking szenario is: - C1 calls S. - S calls F, but blocks in the send phase of the call.
Did I get it right now? (The respective code snippets or IDL would be helpful.)
Greetings, Ron.