题意理解
三个线程调用三个函数,保证函数调用顺序是第一个在前,第二个在中,第三个在后。
问题分析
用posix互斥锁。
类库是pthread.h
锁类型是pthread_mutex_t
pthread_mutex_init 初始化锁,锁类型变量作为参数
pthread_mutex_lock加锁,锁类型变量作为参数
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函数锁
}
};