互斥锁和死锁

互斥锁的作用与操作

互斥锁
  互斥锁是为了解决在多线程访问共享资源时,多个线程同时对共享资源操作产生的冲突而提出的一种解决方法,在执行时,哪个线程持有互斥锁,并对共享资源进行加锁后,才能对共享资源进行操作,此时其它线程不能对共享资源进行操作。只有在持有锁的线程将锁解锁释放后,其它线程才能进行抢锁加锁操作。
  主要作用就是用来解决多线程对共享资源的竞争问题。

pthread_mutex_init互斥锁初始化

原型:
  int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr);
  
参数:
  mutex:互斥锁变量地址(互斥锁资源)
  attr:属性信息
  
返回:
  成功:1
  失败:errorr(错误号码)

pthread_mutex_lock上锁

原型:
  int pthread_mutex_lock(pthread_mutex_t *mutex);
  
参数:
  mutex:互斥锁变量地址(互斥锁资源)

返回:
  成功:1
  失败:errorr(错误号码)

pthread_mutex_unlock解锁

原型:
  int pthread_mutex_unlock(pthread_mutex_t *mutex);
  
参数:
  mutex:互斥锁变量地址(互斥锁资源)
  
返回:
  成功:1
  失败:errorr(错误号码)

pthread_mutex_destroy销毁互斥锁

原型:
  int pthread_mutex_unlock(pthread_mutex_t *mutex);
  
参数:
  mutex:互斥锁变量地址(互斥锁资源)
  
返回:
  成功:1
  失败:errorr(错误号码)

#include 
#include 
#include 

pthread_mutex_t  mutex;     //定义一个锁资源变量(传参容易出问题) 

void *func(void *arg);
 
int main(int argc, char **argv)
{
   
    int status = pthread_mutex_init(&mutex,NULL);   //初始化互斥锁

    pthread_t thread;
    pthread_create (&thread, NULL,func,NULL);//创建线程

    while(1)       //循环上锁
    {
   
        int i = 0;
        pthread_mutex_lock(&mutex);//上锁
        printf("11111我上锁了\n");<

你可能感兴趣的:(c语言)