线程同步(面试三)

/*
面试(一)
开发环境: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();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值