Using MIG RPC between 2 threads inside a process
Using MIG RPC between 2 threads inside a process
- Subject: Using MIG RPC between 2 threads inside a process
- From: Dario <email@hidden>
- Date: Thu, 16 Sep 2004 10:12:25 +0200
Moreover how can I tranfers messages between the 2 involved threads
using condition variables? I though that it would need to use an
intermediate queue of fifo? Using the Mac IPC allows directly to do
that...
Do it in the process' memory? You have a pthread mutex, it can
protect a private queue in addition to the condition variable.
Do you mean using "pthread_mutex" and "pthread_cond_signal/wait" API?
How can this be done?
#include <pthread.h>
pthread_mutex_t lock;
pthread_cond_t cond;
pthread_cond_init( &cond, NULL );
pthread_mutex_init( &lock, NULL );
server:
create client thread
pthread_mutex_lock( &lock );
while(true) {
pthread_cond_wait( &cond, &lock );
do something what you need
}
client:
while( true ) {
pthread_mutex_lock( &lock );
Put some data in a global varibale or so.
pthread_cond_signal( &cond );
}
Or can be resolved by using a queue structure with synchronized access
and verification (still with mutexes), I have an example if you need
it. with this code as you can see you can send only one job and the
client will block until the end of the previous on the server thread
In fact, the condition variable is only interesting when the queue
runs dry. This is always more efficient than trying to queue the
memory in the kernel. Besides, you are limited to a queue depth of
16 (default 5) when you use Mach message queues. Not really much of
a queue to store things in, when you think about it.
OK... Thanks
Stephane
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden