【簡単】1114.シーケンス印刷(*)
【タイトル】public class Foo{public void one(){print("one");public void two() { print(“two”); } public void three() { print(“three”); } } 3つの異なるスレッドは、1つのFooインスタンススレッドAを共有し、one()メソッドスレッドBを呼び出し、two()メソッドスレッドCを呼び出しますthree()メソッドを呼び出します.two()メソッドがone()メソッドの後に実行され、three()メソッドがtwo()メソッドの後に実行されるように、モディファイヤを設計してください.ソース:leetcodeリンク:https://leetcode-cn.com/problems/print-in-order/【例】入力:[1,2,3]出力:「onetwothree」説明:3つのスレッドが非同期起動入力される[1,2,3]は、スレッドAがone()メソッドを呼び出し、スレッドBがtwo()メソッドを呼び出し、スレッドCがthree()メソッドを呼び出し、正しい出力が「onetwothree」であることを示す.【例2】入力:[1,3,2]出力:[onetwothree]解釈:入力[1,3,2]はスレッドAがone()メソッドを呼び出し、スレッドBがthree()メソッドを呼び出し、スレッドCがtwo()メソッドを呼び出すことを示す.【コード】
class Foo {
private:
mutex m2, m3;
public:
Foo() {
m2.lock();
m3.lock();
}
void first(function<void()> printFirst) {
printFirst();
m2.unlock();
}
void second(function<void()> printSecond) {
m2.lock();
printSecond();
m3.unlock();
}
void third(function<void()> printThird) {
m3.lock();
printThird();
m3.unlock();
}
};