Using MIG RPC between 2 threads inside a process
site_archiver@lists.apple.com Delivered-To: darwin-dev@lists.apple.com #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 ); } OK... Thanks _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-dev mailing list (Darwin-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-dev/site_archiver%40lists.appl... 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? 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. Stephane This email sent to site_archiver@lists.apple.com
participants (1)
-
Dario