题意理解
三个线程调用三个函数,保证函数调用顺序是第一个在前,第二个在中,第三个在后。
问题分析
用posix互斥锁。
类库是pthread.h
锁类型是pthread_mutex_t
pthread_mutex_init 初始化锁,锁类型变量作为参数
pthread_mutex_lock加锁,锁类型变量作为参数
【1114. 按序打印【力扣】】pthread_mutex_unlock释放锁,锁类型变量作为参数。
其他
https://blog.csdn.net/u012796139/article/details/46756969
链接
class Foo {
public:
pthread_mutex_t one;
//声明两个互斥信号量
pthread_mutex_t two;
Foo() {
pthread_mutex_init(&one,NULL);
//初始化信号量,NULL表示信号量参数默认
pthread_mutex_init(&two,NULL);
pthread_mutex_lock(&one);
//加锁
pthread_mutex_lock(&two);
}void first(function printFirst) {// printFirst() outputs "first". Do not change or remove this line.
printFirst();
pthread_mutex_unlock(&one);
//执行完函数,释放
}void second(function printSecond) {// printSecond() outputs "second". Do not change or remove this line.
pthread_mutex_lock(&one);
//加锁,直到one函数执行完毕释放锁
printSecond();
pthread_mutex_unlock(&one);
//释放one函数锁
pthread_mutex_unlock(&two);
//释放two函数锁}void third(function printThird) {// printThird() outputs "third". Do not change or remove this line.
pthread_mutex_lock(&two);
//加锁,直到two函数执行完毕释放锁
printThird();
pthread_mutex_unlock(&two);
//释放two函数锁
}
};