网站开发尺寸,网站建设最快多长时间,wordpress哪个主题适合做门户,深圳市网站维护打印要求#xff1a;
三个打印线程顺序进行。
线程要求如下#xff1a;
线程A#xff1a;打印A
线程B#xff1a;打印B
线程C#xff1a;打印C
打印结果#xff1a;
A B C A B C A B C A B C A B C
法一#xff1a;需要锁和共享变量
#include iostream
三个打印线程顺序进行。
线程要求如下
线程A打印A
线程B打印B
线程C打印C
打印结果
A B C A B C A B C A B C A B C
法一需要锁和共享变量
#include iostream
#include thread
#include mutexusing std::cout;
using std::endl;
using std::thread;
using std::mutex;
using std::condition_variable;
using std::unique_lock;enum CVFLAG
{INIT,A_DONE,B_DONE,C_DONE
};mutex mtx;
condition_variable cv;
CVFLAG flag INIT;void printA()
{unique_lockmutex lock(mtx);cout A endl;flag A_DONE;cv.notify_all();
}void printB()
{unique_lockmutex lock(mtx);cv.wait(lock, [] { return flag 1; });cout B endl;flag B_DONE;cv.notify_all();
}void printC()
{unique_lockmutex lock(mtx);cv.wait(lock, [] { return flag 2; });cout C endl;flag C_DONE;cv.notify_all();
}int main()
{int i 0;while (i 5){thread tA(printA);thread tB(printB);thread tC(printC);tA.join();tB.join();tC.join();i;}return 0;
}
法二简单粗暴调整join的顺序
#include iostream
#include thread
#include mutexusing std::cout;
using std::endl;
using std::thread;void printA()
{cout A endl;
}void printB()
{cout B endl;
}void printC()
{cout C endl;
}int main()
{int i 0;while (i 5){thread tA(printA);tA.join();thread tB(printB);tB.join();thread tC(printC);tC.join();i;}return 0;
}