多线程编程的经典入门用例。 /* 生产者消费者线程演示 一个生产者线程将int类型的数入列,一个消费者线程将int类型的数出列 */ #include <windows.h> #include <stdio.h> #include <process.h> #include <iostream> #include <queue> using namespace std; HANDLE ghSemaphore; //信号量 const int gMax = 100; //生产(消费)总数 std::queue<int> q; //生产入队,消费出队 //生产者线程 unsigned int __stdcall producerThread(void* pParam) { int n = 0; while(++n <= gMax) { //生产 q.push(n); cout<<"produce "<<n<<endl; ReleaseSemaphore(ghSemaphore, 1, NULL); //增加信号量 Sleep(300);//生产间隔的时间,可以和消费间隔时间一起调节 } _endthread(); //生产结束 return 0; } //消费者线程 unsigned int __stdcall customerThread(void* pParam) { int n = gMax; while(n--) { WaitForSingleObject(ghSemaphore, 10000); //消费 q.pop(); cout<<"custom "<<q.front()<<endl; Sleep(500);//消费间隔的时间,可以和生产间隔时间一起调节