CreateThread用法
来源:互联网 发布:手机淘宝怎么扫一扫 编辑:程序博客网 时间:2024/06/02 09:32
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to security attributes
DWORD dwStackSize, // initial thread stack size
LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function
LPVOID lpParameter, // argument for new thread
DWORD dwCreationFlags, // creation flags
LPDWORD lpThreadId // pointer to receive thread ID
);
第一个参数是指向SECURITY_ATTRIBUTES型态的结构的指针。在Windows 98中忽略该参数。在Windows NT中,它被设为NULL。第二个参数是用于新线程的初始堆栈大小,默认值为0。在任何情况下,Windows根据需要动态延长堆栈的大小。
CreateThread的第三个参数是指向线程函数的指标。函数名称没有限制,但是必须以下列形式声明:
DWORD WINAPI ThreadProc (PVOID pParam) ;
CreateThread的第四个参数为传递给ThreadProc的参数。这样主线程和从属线程就可以共享数据。
CreateThread的第五个参数通常为0,但当建立的线程不马上执行时为旗标CREATE_SUSPENDED。线程将暂停直到呼叫ResumeThread来恢复线程的执行为止。第六个参数是一个指标,指向接受执行绪ID值的变量。
1,线程和线程句柄(Handle)不是一个东西,线程是在cpu上运行的.....(说不清楚了),线程句柄是一个内核对象。我们可以通过句柄来操作线程,但是线程的生命周期和线程句柄的生命周期不一样的。线程的生命周期就是线程函数从开始执行到return,线程句柄的生命周期是从CreateThread返回到你CloseHandle()。
2,所有的内核对象(包括线程Handle)都是系统资源,用了要还的,也就是说用完后一定要closehandle关闭之,如果不这么做,你系统的句柄资源很快就用光了。
3,如果你CreateThread以后需要对这个线程做一些操作,比如改变优先级,被其他线程等待,强制TermateThread等,就要保存这个句柄,使用完了在CloseHandle。如果你开了一个线程,而不需要对它进行如何干预,CreateThread后直接CloseHandle就行了。
所以
CloseHandel(ThreadHandle );
只是关闭了一个线程句柄对象,表示我不再使用该句柄,即不对这个句柄对应的线程做任何干预了。并没有结束线程。
如果你觉得多了一个变量,也可以写为:
CloseHandel(CreateThread(NULL,0,.....));
- CreateThread用法
- CreateThread用法
- CreateThread用法
- CreateThread用法
- CreateThread用法
- CreateThread用法
- _beginthreadex / CreateThread 的用法
- CreateThread用法详解
- CreateThread函数的用法
- 线程CreateThread 用法
- CreateThread用法详解
- CreateThread函数用法
- CreateThread用法详解
- CreateThread
- CreateThread
- CreateThread
- CreateThread
- CreateThread
- makefile的语法及写法
- 强制ie7兼容模式
- java Wep中的web.xml的初始化参数
- asp.net中的type="text/css"
- abstract class 和interface区别
- CreateThread用法
- 设计模式之迪米特原则
- linux压缩文件总结
- 多版本Subversion服务器在同一Windows系统中共存
- 关于VMware6.5下Ubuntu9.04安装VMware tools的一些问题总结
- 在 CpropertySheet 添加 最大化框 最小化框
- 很好的博客程序
- linux 查看tomcat日志文件
- Qt Labs