1.这里的mutex取的是默认属性。
2.两个锁相互等待。
3.循环嵌套导致的死锁。
4.这里的执行命令是cc -D_REENTRANT stack.c -lpthread -o stack
- #include <stdio.h>
- #include <pthread.h>
- pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
- int main(){
- int a = 1;
-
- pthread_mutex_init(&mutex, NULL);
-
- pthread_mutex_lock(&mutex);
- pthread_mutex_lock(&mutex);
- a++;
- printf("a = %d\n", a);
- pthread_mutex_unlock(&mutex);
- pthread_mutex_unlock(&mutex);
-
- printf("a = %d\n", a);
- pthread_mutex_destroy(&mutex);
- return 0;
- }
最后的结果是什么都没有输出。
可见产生了死锁,相互等待。
阅读(727) | 评论(0) | 转发(0) |