例子
https://www.cnblogs.com/XiHua/p/5028329.html
在C/C++中可以通过CreateThread函数在进程中创建线程
https://blog.youkuaiyun.com/u012877472/article/details/49721653
当使用CreateProcess调用时,系统将创建一个进程和一个主线程。CreateThread将在主线程的基础上创建一个新线程
https://www.cnblogs.com/rosesmall/p/14843693.html
多线程--第一次亲密接触CreateThread与_beginthreadex本质区别
https://www.cnblogs.com/lca1826/p/6612186.html
互斥锁
要使用的这个线程需要将这个资源(取钱这个过程)先“锁”起来,然后用好之后再解锁,这期间别的线程就无法使用了,其他线程的也是类似的过程。
//创建一个锁
hMutex1 =CreateMutex(NULL,FALSE,NULL);
DWORD WINAPI MyThread2(LPVOID lpParamter)
{
while (1)
{
//没上锁的话就自己锁上,否则等着
WaitForSingleObject(hMutex1,INFINITE);
flag=!flag;
cout << "MyThread1 Runing :"<<"线程2"<<" "<<flag<< endl;
Sleep(1000);
//解锁
ReleaseMutex(hMutex1);
}
}
https://www.cnblogs.com/ssss429170331/p/5514697.html
std::mutex为线程加锁
//数据处理函数,会持续运行
void ProcessData()
{
while (true)
{
m_ProcessMutex.lock();
Sleep(100); //模拟数据处理的耗时
m_nData++;
std::cout << m_nData << std::endl;
m_ProcessMutex.unlock();
}
}
void SetData(int nData)
{
m_ProcessMutex.lock();
this->m_nData = nData;
m_ProcessMutex.unlock();
}
private:
HANDLE m_hProcessThread; //数据处理线程句柄
int m_nData; //模拟线程处理的数据
DWORD m_dwThreadID; //线程ID
std::mutex m_ProcessMutex; //数据处理操作互斥量
https://blog.youkuaiyun.com/logic9169/article/details/105299791