我们进行Windows编程编写多线程程序的时候经常需要用到线程同步,我们来实现用Event同步线程。
请见代码注释与实例讲解。
/* 头文件 */
#include <windows.h>
#include <stdio.h>
/* 常量定义 */
#define NUMTHREADS 3
#define BUFFER_SIZE 16
#define FOR_TIMES 5
/* 全局变量 */
HANDLE hWriteEvent[NUMTHREADS]; // 写Event 表示写操作是否完成
HANDLE hReadEvents[NUMTHREADS]; // 读Event 表示读操作是否完成
BYTE lpSharedBuffer[16] = {0}; // 共享内存
/* 函数声明 */
void MultiEvents(void);
VOID WriteToBuffer(VOID);
DWORD WINAPI ThreadFunction(LPVOID lpParam);
/*************************************
* int main(void)
* 功能 演示
*
* 参数 未使用
**************************************/
int main()
{
MultiEvents();
}
/*************************************
* void UseEvents(void)
* 功能 演示Event的使用方法
*
* 参数 未使用
**************************************/
void MultiEvents(void)
{
HANDLE hThread;
DWORD i;
// 创建多个线程,读共享内存,主线程写共享内存。
// 每个线程都有对应的读写同步事件
for(i = 0; i < NUMTHREADS; i++)
{
// 每个线程都有一个Event表示写入操作完成
hWriteEvent[i] = CreateEve