线程同步:
协同步调,对公共区域数据按序访问。防止数据混乱,产生与时间有关的错误。
锁的使用:
对公共数据进行保护。所有线程应该在访问公共数据前先拿锁再访问。但,锁本身不具备强制性。
互斥锁 mutex
步骤:
1、pthread_mutex_t 类型。
2、pthread_mutex_t lock; 创建锁
3、pthread_mutex_init; 初始化
4、pthread_mutex_lock; 加锁,mutex-- => 1 --> 0
5、访问共享数据(stdout)
6、pthrad_mutext_unlock(); 解锁,mutex++ => 0 --> 1
7、pthead_mutex_destroy; 销毁锁
初始化互斥量:
pthread_mutex_t mutex;
1. 动态初始化: pthread_mutex_init(&mutex, NULL);
2. 静态初始化: pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
*注意事项:
尽量保证锁的粒度, 越小越好。(访问共享数据前,加锁。访问结束【立即】解锁。)