做项目中涉及到多线程的操作,所以学习了一下MFC中多线程的用法!
包括句柄的定义、初始化,线程函数的定义、初始化,锁的使用。
句柄的定义:
CWinThread* thread1;
线程函数的定义:
static UINT thread1_func(LPVOID lpParam);
加static表示函数归类本身所有。
锁的定义:
HANDLE hMutex1;//互斥锁
句柄初始化:
thread1 = AfxBeginThread(thread1_func, this, 0, 0, CREATE_SUSPENDED, NULL);
this表示传入this指针,线程可以使用对象数据成员和成员函数。CREATE_SUSPENDED表示以阻塞方式创建线程。
句柄控制线程执行与挂起:
q->thread1->SuspendThread();//线程自己控制自己挂起
thread1->ResumeThread();//恢复线程,主线程控制
锁的使用:
hMutex1 = CreateMutex(NULL, FALSE, NULL);
WaitForSingleObject(q->hMutex1, INFINITE);//等待获得互斥锁
ReleaseMutex(q->hMutex1); // 释放互斥锁