今天是上班第一天,写了一个简单的线程互斥访问练习了一下多线程。虽然以前写过,但现在写还是碰到蛮多问题,比如WaitForSingleObject()函数加在哪个位置(可以用WaitForSingleObject()等待前一个线程结束后然后开启下一个线程以此达到同步的问题,但网上看到别人的写法在线程函数中同时也加了一道锁。我目前的测试是二者只需要其一即可实现互斥访问),刚开始申请了五个线程ID最后只显示出了三个等等(vs2013一个完整的dos界面只能显示300行,每个线程ID会打印100行数字,所以最后打印结果只有200-500)。
#include "stdafx.h"#include <iostream>
#include <windows.h>
using namespace std;
int globalV = 0 ;
HANDLE hMutex = NULL;
//每个线程都给全局变量增加100
DWORD WINAPI Add(LPVOID lpParamter)
{
//在实现加法的代码处加锁
hMutex = CreateMutex(NULL,TRUE,"Add");WaitForSingleObject(hMutex, INFINITE);
for(int i = 1 ; i