我需要解决在C生产者 - 消费者问题++使用基本同步对象 - 事件,我已经写了这个代码如何解决在C++中使用winapi事件的生产者 - 消费者?
static int g_x = 0;
HANDLE hEvent1;
HANDLE aThread[2];
DWORD ThreadID;
//tread 1
void Producer()
{
for (int i = 0; i < 100; ++i)
{
WaitForSingleObject(hEvent1, INFINITE);
g_x = i;
SetEvent(hEvent1);
}
}
//thread 2
void Consumer()
{
for (;;)
{
WaitForSingleObject(hEvent1, INFINITE);
SetEvent(hEvent1);
}
}
int createthreads() {
hEvent1 = CreateEvent(NULL, FALSE, TRUE, NULL);
// Create worker threads
aThread[0] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Producer, NULL, 0, &ThreadID);
aThread[1] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Consumer, NULL, 0, &ThreadID);
}
int main() {
createthreads();
}
此代码不能正常工作:我有无限循环 我怎样才能解决这个代码要获得从0
到99
的控制台号码?
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686903(v=vs.85).aspx –
https://msdn.microsoft.com/en-us /library/windows/desktop/aa904937(v=vs.85).aspx –
这种类型的代码需要使用2个事件 – RbMm