/*
面试(一)
开发环境:Visual Studio 2008
开发语言:C语言
要 求:阅读以下程序,口述其执行过程。
时 间:10-15分钟
*/
#include <windows.h>
#include <stdio.h>
#define NUMTHREADS 3
#define BUFFER_SIZE 16
#define FOR_TIME 5
HANDLE hEvent;
BYTE lpSharedBuffer[16]={0};
DWORD WINAPI EventFunction(LPVOID lpParam)
{
DWORD dwWaitResult;
dwWaitResult=WaitForSingleObject(hEvent,INFINITE);
if(dwWaitResult!=WAIT_OBJECT_0)
{
printf("Wait error: %d\n",GetLastError());
return 0;
}
printf(lpSharedBuffer);
if(!ResetEvent(hEvent))
{
printf("SetEvent failed (%d) \n",GetLastError());
return 0;
}
return 1;
}
void UseEvents(void)
{
HANDLE hThread;
hEvent=CreateEvent(NULL,FALSE,FALSE,NULL);
if(hEvent==NULL)
{
printf("CreateEvent failed (%d) \n",GetLastError());
return ;
}
hThread=CreateThread(NULL,0,EventFunction,NULL,0,NULL);
if(hThread==NULL)
{
printf("CreateThread failed (%d) \n",GetLastError());
return ;
}
Sleep(2000);
CopyMemory(lpSharedBuffer,"Hi,Siri!",strlen("Hi,Siri!"));
SetEvent(hEvent);
}
int main()
{
UseEvents();
}