现在,我们就来看看最简单的线程是什么样的.顺便介绍以下相关函数啦!
1:创建一个线程
void CMultiThreadDlg::OnBtnSimple()
{
// TODO: Add your control notification handler code here
DWORD dwThread/*,dwExitCode*/;
HANDLE hThread = NULL;
hThread = ::CreateThread(
NULL/*系统安全描述,NULL*/,
0/*Windows系统一般线程栈大小为1 MB,创建线程的数目与物理内存和栈空间大小有关*/,
(LPTHREAD_START_ROUTINE)ThreadProc/*线程启动函数*/,
NULL/*线程启动函数接收的参数*/,
0/*CREATE_SUSPENDED*/,
&dwThread/*线程ID*/);
// SuspendThread(hThread/*线程句柄*/); //挂起线程
// ResumeThread(hThread/*线程句柄*/); //启动线程
// ExitThread(0/*线程退出码*/); //线程函数内部使用,用于退出线程
// TerminateThread(
// hThread/*线程句柄*/,
// 0/*线程退出码*/); //外部线程强制关闭一个正在运行的线程,这是不安全的做法,因为线程的资源并不会因为线程关闭而释放。
PostThreadMessage(
dwThread/*线程ID*/,
WM_QUIT/*线程消息*/,
0/*线程字参数*/,
0/*线程长参数*/); //向线程发送消息,将消息放到线程的消息队列中,不过现成本身必须实现消息循环
// GetExitCodeThread(
// hThread/*线程句柄*/,
// &dwExitCode/*线程退出码*/);
// SetThreadPriority(hThread,THREAD_PRIORITY_NORMAL); //设置线程优先级
// GetThreadPriority(hThread); //得到线程优先级
CloseHandle(hThread/*线程句柄*/); //关闭线程句柄,减少内核对象的引用记数
//GetDlgItem(IDC_BTN_SIMPLE)->EnableWindow(FALSE);
}
2:实现这个线程函数
static DWORD ThreadProc(
LPVOID lpParameter
)
{
return 0;
}
好,一切搞定,简单吧,接下来几回,我们会陆续探讨多线程的话题.记得关注哦