我需要解決在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