互斥锁(实验)(不严谨)

  1. 进程与进程的锁和线程与线程的锁是不一样的。
  2. abc三部曲
  • pthread_mutex_t lock =PTHREAD_MUTEX_INITIALIZER;//创建一个锁
  • pthread_mutex_lock(&lock);//上锁
  • pthread_mutex_unlock(&lock);//开锁
  1. 对于全局变量,共享数据就是临界区,需要使用锁。
int ticketAmount =2;
//这里定义一个pthread_mutex_t 
pthread_mutex_t lock=PTHREAD_MUTEX_INITIALIZER;

void* ticketAgent(void* arg){

//---------需要使用锁
  pthread_mutex_lock(&lock);

  int t =ticketAmount;
  if(t>0){
  printf("One ticket sold!\n");
  t--;
}else{
  printf("Ticket sold out!\n");
}
  ticketAmount=t;

//---------
  pthtread_mutex_unlock(&lock);

  pthread_exit(0);
}
posted @ 2024-04-24 20:09  zhudachang  阅读(1)  评论(0编辑  收藏  举报