just testing
This commit is contained in:
55
condvars1.cpp
Normal file
55
condvars1.cpp
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
void* threadFunction1( void* );
|
||||||
|
void* threadFunction2( void* );
|
||||||
|
|
||||||
|
int state = 0;
|
||||||
|
pthread_cond_t condvar;
|
||||||
|
pthread_mutex_t mutex;
|
||||||
|
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
pthread_t t1, t2;
|
||||||
|
pthread_mutex_init( &mutex, 0 );
|
||||||
|
pthread_cond_init( &condvar, 0 );
|
||||||
|
pthread_create( &t1, 0, threadFunction1, 0 );
|
||||||
|
pthread_create( &t2, 0, threadFunction2, 0 );
|
||||||
|
|
||||||
|
pthread_join( t1, 0 );
|
||||||
|
pthread_join( t2, 0 );
|
||||||
|
pthread_mutex_destroy( &mutex );
|
||||||
|
pthread_cond_destroy( &condvar );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void* threadFunction1( void* )
|
||||||
|
{
|
||||||
|
pthread_mutex_lock( &mutex );
|
||||||
|
std::cout << "ding" << std::endl;
|
||||||
|
state = 1;
|
||||||
|
pthread_cond_signal( &condvar );
|
||||||
|
pthread_mutex_unlock( &mutex );
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void* threadFunction2( void* )
|
||||||
|
{
|
||||||
|
pthread_mutex_lock( &mutex );
|
||||||
|
while( state != 1 )
|
||||||
|
{
|
||||||
|
pthread_cond_wait( &condvar, &mutex );
|
||||||
|
}
|
||||||
|
sleep( 1 );
|
||||||
|
std::cout << "dong" << std::endl;
|
||||||
|
pthread_mutex_unlock( &mutex );
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user