/* ************************************************************************ * Filename: n_trylock.c * Description: * Version: 1.0 * Created: 2011骞?4鏈?2鏃?20鏃?9鍒?2绉? * Revision: none * Compiler: gcc * Author: wenhao (wh), hnrain1004@gmail.com * Company: sunplusapp * *********************************************************************** */ #include < stdio.h > #include < pthread.h > #include < errno.h > pthread_mutex_t mutex; void * thread_a( void * arg){ printf( " thread a enter\n " ); pthread_mutex_lock( & mutex); printf( " mutex a lock\n " ); sleep( 6 ); pthread_mutex_unlock( & mutex); printf( " mutex a unlock\n " );} void * thread_b( void * arg){ printf( " thread b enter\n " ); #if 1 pthread_mutex_trylock( & mutex); #else while (pthread_mutex_trylock( & mutex) == EBUSY) { printf( " pthread b trylock\n " ); sleep( 1 ); } #endif printf( " mutex b lock\n " ); pthread_mutex_unlock( & mutex); printf( " mutex b unlock\n " );} int main( int argc, char ** argv){ pthread_t tid_a,tid_b; int err; if (pthread_mutex_init( & mutex,NULL) != 0 ) { perror( " pthread_mutex_init " ); } err = pthread_create( & tid_a,NULL,thread_a,NULL); if (err != 0 ) { perror( " pthread_create thread_a " ); } sleep( 1 ); err = pthread_create( & tid_b,NULL,thread_b,NULL); if (err < 0 ) { perror( " pthread_create thread_b " ); } sleep( 10 ); printf( " the main close\n " ); return 0 ;}