//创建线程
/*
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes, 安全性,可以为 NULL使用缺省的安全性
DWORD dwStackSize, 初始提交栈的大小,如果为0表示和调用线程一样的大小
LPTHREAD_START_ROUTINE lpStartAddress, 线程函数地址,有固定格式
LPVOID lpParameter, 线程函数参数
DWORD dwCreationFlags, CREATE_SUSPENDED创建后线程不执行(ResumeThread后运行),0线程立即运行
LPDWORD lpThreadId); 系统返回的线程ID,2000以上可以为NULL, 如果98系统,不可以为NULL
*/
//线程函数
DWORD WINAPI thread_Mutex_Fun1Proc(
LPVOID lpParameter)
{
cout<<"thread1 running"<<endl;
}
return 0;
}
//线程函数
DWORD WINAPI thread_Mutex_Fun2Proc(
LPVOID lpParameter)
{
cout<<"thread2 running"<<endl;
}
return 0;
}
//线程创建
void thread_Mutex()
{
HANDLE handle1 = CreateThread(NULL, 0, thread_Mutex_Fun1Proc, NULL, 0, NULL);
HANDLE handle2 = CreateThread(NULL, 0, thread_Mutex_Fun2Proc, NULL, 0, NULL);
CloseHandle(handle1);
CloseHandle(handle2);
Sleep(200);
}
可以看到在线程创建主体中,创建之后马上被CloseHandle关闭,此时线程并没有被结束,只是减少线程内核计数,线程执行结束后会自动释放资源。