今天遇到了这个问题,晚上回来写个例子试试,试试证明还是会死锁的。 一个不同线程分别加锁的例子,这种情况是不会死锁的。 #include <pthread.h> #include <stdio.h> pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; int count = 0; void * thread_func_one(void *arg) { int i; for(i=0;i<10;i++){ pthread_mutex_lock( &mutex1); count++; sleep(1); pthread_mutex_unlock(&mutex1); printf("thread one count value is %d/n",count); } return NULL; } void * thread_func_two(void *arg) { int i; for(i=0;i<10;i++){ pthread_mutex_lock( &mutex1); //pthread_mutex_lock( &mutex1); count++; sleep(1); //pthread_mutex_unlock(&mutex1); pthread_mutex_unlock(&mutex1); printf("thread two count value is %d/n",count); } return NULL; } int main ( int argc, char **argv) { pthread_t thread_on