1114. 按序打印【力扣】

题意理解

三个线程调用三个函数,保证函数调用顺序是第一个在前,第二个在中,第三个在后。

问题分析

用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函数锁
    }
};

 

你可能感兴趣的:(工作刷题)