Linux多线程4-1_互斥量
一、为什么要使用互斥量 1、当多个线程共享相同的内存时,需要每一个线程看到相同的视图。当一个线程修改变量时,而其他线程也可以读取或者修改这个变量,就需要对 这些线程同步,确保他们不会访问到无效的变量 2、在变量修改时间多于一个存储器访问周期的处理器结构中,当存储器的读和写这两个周期交叉时,这种潜在的不一致性就会出现。当然这与处理 器相关,但是在可移植的程序中并不能对处理器做出任何假设 二、互斥量的初始化 1、为了让线程访问数据不产生冲突,这要就需要对变量加锁,使得同一时刻只有一个线程可以访问变量。互斥量本质就是锁,访问共享资源前对 互斥量加锁,访问完成后解锁 2、当互斥量加锁以后,其他所有需要访问该互斥量的线程都将阻塞 3、当互斥量解锁以后,所有因为这个互斥量阻塞的线程都将变为就绪态,第一个获得cpu的线程会获得互斥量,变为运行态,而其他线程会继续 变为阻塞,在这种方式下访问互斥量每次只有一个线程能向前执行 4、互斥量用pthread_mutex_t类型的数据表示,在使用之前需要对互斥量初始化 1)、如果是动态分配的互斥量,可以调用pthread_mutex_init()函数初始化 2)、如果是静态分配的互斥量,还可以把它置为常量PTHREAD_MUTEX_INITIALIZER 3)、动态分配的互斥量在释放内存之前需要调用pthread_mutex_destroy() int