Поток общения в Unix - PullRequest
       7

Поток общения в Unix

0 голосов
/ 22 февраля 2011

Я написал программу, в которой основной поток создает поток и отправляет событие всякий раз, когда над вторым потоком приходится работать, это прекрасно работает в Windows, но при переносе его на * nix трудно добиться того же.

позвольте мне объяснить, пожалуйста, рассмотрите следующее

/* thread2 function */
thread_function_call()  
{  
   /* be a consumer */

 pthread_exit();  
}  


/* main function */  
main()  
{  

  /* create a thread */  
  pthread_create();  

  while(1)  
   {  
       /* produce the stuff for consumer or thread2 */  
        /* generate the event */  
   }   

 pthread_join();  
}  

Здесь основной поток в непрерывном цикле, а затем запускает событие / вызывает поток 2, как только он запускает событие / вызывает поток 2,Должна выполняться функция thread2.

Это что-то вроде проблемы производителя и потребителя, пожалуйста, учтите, что все условия синхронизации выполнены.

Пожалуйста, помогите мне, как лучше всего этого достичь

1 Ответ

2 голосов
/ 23 февраля 2011

Общий способ реализации производителя-потребителя с помощью pthreads заключается в использовании условной переменной . Поток (и) потребителя блокируется в pthread_cond_wait(), и производитель сообщает ему / им с помощью pthread_cond_signal() или pthread_cond_broadcast().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...