// CThread.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "stdio.h"
#include "afxmt.h"//加锁头文件
#include "iostream"
#include <mutex>
using namespace std;
mutex mt;//加锁变量
int g_iAllCount = 100;
//线程函数1
DWORD WINAPI ThreadProc1(_In_ LPVOID lpParameter)
{
for (size_t i = 0; i < 10; i++)
{
mt.lock();
// printf("ThreadProc111 befor : %d\r\n", g_iAllCount);
g_iAllCount--;
printf("ThreadProc111 Befer : %d\r\n", g_iAllCount);
mt.unlock();
}
return 0;
};
//线程函数2
DWORD WINAPI ThreadProc2(_In_ LPVOID lpParameter)
{
for (size_t i = 0; i < 10; i++)
{
mt.lock();
// printf("ThreadProc222 befor : %d\r\n", g_iAllCount);
g_iAllCount--;
printf("ThreadProc222 Befer : %d\r\n", g_iAllCount);
mt.unlock();
}
return 0;
};
int main()
{
{
HANDLE handle1 = CreateThread(NULL, 0, ThreadProc1, 0, CREATE_SUSPENDED, NULL);//新建线程1
HANDLE handle2 = CreateThread(NULL, 0, ThreadProc2, 0, CREATE_SUSPENDED, NULL);//新建线程2
ResumeThread(handle1);//恢复线程
ResumeThread(handle2);
}
//与上一代码块功能相同
{
//HANDLE handle1 = CreateThread(NULL, 0, ThreadProc1, 0, 0, NULL);//新建线程1
//HANDLE handle2 = CreateThread(NULL, 0, ThreadProc2, 0, 0, NULL);//新建线程2
}
printf("开始线程\n");
system("pause");
return 0;
}