linux2次锁互斥变量死锁的例子
--------------------------------------------------
1 #include <stdio.h>
2 #include <pthread.h>
3 #include <stdlib.h>
4
5
6 pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
7
8 void* f()
9 {
10 pthread_mutex_lock(&mutex);
11 //the second lock will caused dead lock in the thread
12 pthread_mutex_lock(&mutex);
13 printf("new thread didn't dead lock?\n");
14 pthread_mutex_unlock(&mutex);
15 return (void*)0;
16 }
17
18 int main()
19 {
20 //can not init in main function ?
21 //mutex = PTHREAD_MUTEX_INITIALIZER;
22 pthread_t ptd;
23 pthread_create(&ptd, NULL, f, NULL);
24 pthread_join(ptd, NULL);
25 printf("main thread quit!\n");
26 return 0;
27 }
~
~
--------------------------------------------------
1 #include <stdio.h>
2 #include <pthread.h>
3 #include <stdlib.h>
4
5
6 pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
7
8 void* f()
9 {
10 pthread_mutex_lock(&mutex);
11 //the second lock will caused dead lock in the thread
12 pthread_mutex_lock(&mutex);
13 printf("new thread didn't dead lock?\n");
14 pthread_mutex_unlock(&mutex);
15 return (void*)0;
16 }
17
18 int main()
19 {
20 //can not init in main function ?
21 //mutex = PTHREAD_MUTEX_INITIALIZER;
22 pthread_t ptd;
23 pthread_create(&ptd, NULL, f, NULL);
24 pthread_join(ptd, NULL);
25 printf("main thread quit!\n");
26 return 0;
27 }
~
~

本文提供了一个Linux环境下使用pthread库导致死锁的实例代码,详细解释了二次锁操作如何引发死锁,并通过代码分析帮助理解死锁原理。
843

被折叠的 条评论
为什么被折叠?



