내가 원시 동기화 개체를 사용하여 C++에서 생산자 - 소비자 문제를 해결해야 할 사건은 이미이 코드C++에서 winapi 이벤트를 사용하여 Producer-Consumer를 해결하는 방법은 무엇입니까? 나는이 코드를 해결할 수있는 방법 무한주기 을 가지고있다 -
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