Chinaunix首页 | 论坛 | 博客
  • 博客访问: 473849
  • 博文数量: 120
  • 博客积分: 1853
  • 博客等级: 上尉
  • 技术积分: 1177
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-22 22:40
文章分类

全部博文(120)

文章存档

2013年(16)

2012年(104)

分类: LINUX

2012-05-14 11:43:39

1.这里的mutex取的是默认属性。
2.两个锁相互等待。
3.循环嵌套导致的死锁。
4.这里的执行命令是cc -D_REENTRANT stack.c -lpthread  -o stack

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <pthread.h>

  3. pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

  4. int main(){
  5.     int a = 1;
  6.     
  7.     pthread_mutex_init(&mutex, NULL);
  8.     
  9.     pthread_mutex_lock(&mutex);

  10.     pthread_mutex_lock(&mutex);

  11.     a++;
  12.     printf("a = %d\n", a);

  13.     pthread_mutex_unlock(&mutex);
  14.     pthread_mutex_unlock(&mutex);
  15.     
  16.     printf("a = %d\n", a);
  17.     pthread_mutex_destroy(&mutex);
  18.     return 0;
  19. }
最后的结果是什么都没有输出。
可见产生了死锁,相互等待。
阅读(691) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~