一、基本概念
采用多线程的方式,线程间的通信可以使用共享的全局变量,运行于一个进程中的多个线程使用相同的地址空间、共享大部分的数据,启动和切换一个线程的时间开销也比较小。
pthread_create:创建线程
pthread_exit:线程结束
pthread_join:等待线程结束
二、访问共享变量
1、上锁
由于多个线程极有可能访问共享的资源,可通过加锁的机制,类似于多进程间的信号量机制。
在主线程中初始化为解锁状态,在访问共享对象之前进行加锁操作,访问共享对象后进行解锁操作。
其实也可以理解为取信号,取得到1就解锁,取不到就阻塞。
即:若mutex处于解锁状态,加锁操作成功,pthread_mutex_lock立即返回,从而顺利进入关键区;
若mutext处于加锁状态,othread_mutex_lock将一直阻塞到mutex被解锁。
2、信号量
信号量本质上是一个非负的整数计数器,被用来控制对公共资源的访问
sem_init初始化信号量
sen_wait实现信号量减一操作
sem_post加一操作
sem_destory删除信号量