#include
<
iostream
>
#include < pthread.h >
#include < string >
#include < unistd.h >
using namespace std;
int Number = 0 ;
pthread_mutex_t NMutex;
pthread_cond_t NCond;
void * thread1( void * arg)
{
pthread_detach(pthread_self());
pthread_mutex_lock(&NMutex);
while (Number <= 0 )//等待主线程读入Number
pthread_cond_wait(&NCond, &NMutex);
int Count = Number;
int Sum = 1;
for (int i = 1; i < Count; i++)
Sum += i;
cout << "count by thread1 is " << Sum << endl;
pthread_mutex_unlock(&NMutex);
return NULL;
}
void * thread2( void * arg)
{
pthread_detach(pthread_self());
pthread_mutex_lock(&NMutex);
while (Number <= 0 )//等待主线程读入Number
pthread_cond_wait(&NCond, &NMutex);
int Count = Number;
int Sum = 1;
for (int i = 1; i < Count; i++)
Sum += i;
cout << "count by thread2 is " << Sum << endl;
pthread_mutex_unlock(&NMutex);
return NULL;
}
int main( int argc, char * argv[])
{
pthread_mutex_init(&NMutex, NULL);
pthread_cond_init(&NCond, NULL);
pthread_t p1, p2;
pthread_create(&p1, NULL, thread1, NULL);
pthread_create(&p2, NULL, thread2, NULL);
#include < pthread.h >
#include < string >
#include < unistd.h >
using namespace std;
int Number = 0 ;
pthread_mutex_t NMutex;
pthread_cond_t NCond;
void * thread1( void * arg)
{
pthread_detach(pthread_self());
pthread_mutex_lock(&NMutex);
while (Number <= 0 )//等待主线程读入Number
pthread_cond_wait(&NCond, &NMutex);
int Count = Number;
int Sum = 1;
for (int i = 1; i < Count; i++)
Sum += i;
cout << "count by thread1 is " << Sum << endl;
pthread_mutex_unlock(&NMutex);
return NULL;
}
void * thread2( void * arg)
{
pthread_detach(pthread_self());
pthread_mutex_lock(&NMutex);
while (Number <= 0 )//等待主线程读入Number
pthread_cond_wait(&NCond, &NMutex);
int Count = Number;
int Sum = 1;
for (int i = 1; i < Count; i++)
Sum += i;
cout << "count by thread2 is " << Sum << endl;
pthread_mutex_unlock(&NMutex);
return NULL;
}
int main( int argc, char * argv[])
{
pthread_mutex_init(&NMutex, NULL);
pthread_cond_init(&NCond, NULL);
pthread_t p1, p2;
pthread_create(&p1, NULL, thread1, NULL);
pthread_create(&p2, NULL, thread2, NULL);
//begin input
pthread_mutex_lock(&NMutex);
cout << "input a number ";
cin >> Number;
pthread_mutex_unlock(&NMutex);
pthread_cond_signal(&NCond);
//end input
cin >> Number;
pthread_mutex_unlock(&NMutex);
pthread_cond_signal(&NCond);
//end input
pthread_exit(NULL);
}