1. java 锁
http://wiki.jikexueyuan.com/project/java-concurrent/locks-in-java.html
private static final ExecutorService mSingleThreadExecutor = Executors.newSingleThreadExecutor();
public static final Lock mLock = new ReentrantLock();
mLock.lock();
mLock.unlock();
2. C++ 锁
https://blog.csdn.net/primeprime/article/details/79697083
https://www.cnblogs.com/yongdaimi/p/8267335.html
- mutex
static pthread_mutex_t mutex;
pthread_mutex_init(&mutex, NULL);
pthread_mutex_destroy(&mutex);
pthread_mutex_lock(&mutex);
pthread_mutex_unlock(&mutex);
- sem
初始化:初始化信号量
static sem_t g_DeviceIDSem;
sem_t* config_GetDeviceIDSem() {
return &g_DeviceIDSem;
}
sem_t* deviceIDSem = config_GetDeviceIDSem();
sem_init(deviceIDSem, 0, 0);
线程等待:执行到这一步暂停执行
sem_t* deviceIDSem = config_GetDeviceIDSem();
sem_wait(deviceIDSem);
线程释放:让等待的线程继续执行
sem_t* deviceIDSem = config_GetDeviceIDSem();
if (deviceIDSem != NULL) {
sem_post(deviceIDSem);
}