一段使用 mutex 和 条件变量 pthread_cond_wait 的例子

时间:2021-10-14 20:57:08
#include  < iostream >
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子#include 
< pthread.h >
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子#include 
< string >
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子#include 
< unistd.h >
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
using   namespace  std;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
int  Number  =   0 ;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子pthread_mutex_t NMutex;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子pthread_cond_t NCond;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
void   * thread1( void   * arg)
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
{
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        pthread_detach(pthread_self());
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        pthread_mutex_lock(
&NMutex);
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        
while (Number <= 0 )//等待主线程读入Number
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
                pthread_cond_wait(&NCond, &NMutex);
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        
int Count = Number;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        
int Sum = 1;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        
for (int i = 1; i < Count; i++)
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子                Sum 
+= i;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        cout 
<< "count by thread1 is " << Sum << endl;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        pthread_mutex_unlock(
&NMutex);
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        
return NULL;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子}

一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
void   * thread2( void   * arg)
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
{
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        pthread_detach(pthread_self());
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        pthread_mutex_lock(
&NMutex);
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        
while (Number <= 0 )//等待主线程读入Number
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
                pthread_cond_wait(&NCond, &NMutex);
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        
int Count = Number;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        
int Sum = 1;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        
for (int i = 1; i < Count; i++)
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子                Sum 
+= i;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        cout 
<< "count by thread2 is " << Sum << endl;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        pthread_mutex_unlock(
&NMutex);
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        
return NULL;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子}

一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
int  main( int  argc,  char *  argv[])
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
{
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        pthread_mutex_init(
&NMutex, NULL);
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        pthread_cond_init(
&NCond, NULL);
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        pthread_t p1, p2;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        pthread_create(
&p1, NULL, thread1, NULL);
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        pthread_create(
&p2, NULL, thread2, NULL);


一段使用 mutex 和 条件变量 pthread_cond_wait 的例子//begin input
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        pthread_mutex_lock(&NMutex);
           cout << "input a number ";
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        cin 
>> Number;
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        pthread_mutex_unlock(
&NMutex);
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        pthread_cond_signal(
&NCond);
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子//end input

一段使用 mutex 和 条件变量 pthread_cond_wait 的例子        pthread_exit(NULL);
一段使用 mutex 和 条件变量 pthread_cond_wait 的例子}