简单介绍
线程同步,并非如字面意思是说多个线程一期同时运行,而是它们可以按照预定的先后次序执行。因为实验室里的电脑是单核CPU,所以系统实际操作就是采用时间片轮询的方式来执行每个进程;若是多核CPU 的电脑,那线程之间就有可能并发运行,这时候就要尽量少使用或避免使用全局变量以防止多进程同时访问该全局变量。
代码展示
// 创建三个线程句柄
HANDLE hThread1;
HANDLE hThread2;
HANDLE hThread3;
//创建事件对象
g_hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); //第二个参数代表是否是人工重置
// 我推荐设置为TRUE,这样当该事件对象得到通知的时候,该对象的所有线程都可以调用了
//让事件对象变为有信号状态
SetEvent(g_hEvent);
//创建线程1
hThread1 = CreateThread(NULL, 0, Thread1Proc, NULL, 0, NULL);
//创建线程2
hThread2 = CreateThread(NULL, 0, Thread2Proc, NULL, 0, NULL);
//创建线程3
hThread3 = CreateThread(NULL, 0, Thread3Proc, NULL, 0, NULL);
//主线程休眠600秒
Sleep(600000);
//关闭线程句柄
CloseHandle(hThread1);
CloseHandle(hThread2);
CloseHandle(hThread3);
//关闭事件对象句柄
CloseHandle(g_hEvent);
//线程1入口函数
DWORD WINAPI Thread1Proc(LPVOID lpParameter)
{
apple();
return 0;
}
//线程2入口函数
DWORD WINAP