1,代码举例,新建一个lock.c:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int i = 0;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
void* start_routine(void *arg)
{
int j;
char *str = (char*)arg;
for (j=0; j<10; ++j)
{
pthread_mutex_lock(&mutex);
pthread_mutex_lock(&mutex); //死锁产生的位置
printf("i=%d, from %s\n",i, arg);
//pthread_mutex_lock(&mutex);
i++;
pthread_mutex_unlock(&mutex);
}
return NULL;
}
int main(void)
{
pthread_t pid1;
char *str1 = "A";
pthread_create(&pid1,NULL,start_routine,(void*)str1);
pthread_join(pid1,NULL);
return 0;
}
gcc lock.c -lpthread -g
gdb a.out