社区
Delphi
帖子详情
如何使用CreateThread
fantom
2002-01-18 12:19:53
如何用CreateThread生成一个线程,当程序执行一段代码时显示一个窗口
执行完后销毁线程。
网络老是出错
...全文
177
2
打赏
收藏
如何使用CreateThread
如何用CreateThread生成一个线程,当程序执行一段代码时显示一个窗口 执行完后销毁线程。 网络老是出错
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaoxiaohan
2002-01-18
打赏
举报
回复
3. 如何使用CreateThread函数?
当CreateThread被调用时,系统创建一个线程内核对象。该线程内核对象不是线程本身,而是操作系统用来管理线程的较小的数据结构。使用时应当注意在不需要对线程内核进行访问后调用CloseHandle函数关闭线程句柄。因为CreateThread函数中使用某些C/C++运行期库函数时会有内存泄漏,所以应当尽量避免使用。
参数 含义
lpThreadAttributes 如果传递NULL该线程使用默认安全属性。如果希望所有的子进程能够继承该线程对象的句柄,必须将它的bInheritHandle成员被初始化为TRUE。
dwStackSize 设定线程堆栈的地址空间。如果非0,函数将所有的存储器保留并分配给线程的堆栈。如果是0,CreateThread就保留一个区域,并且将链接程序嵌入.exe文件的/STACK链接程序开关信息指明的存储器容量分配给线程堆栈。
lpStartAddress 线程函数的地址。
lpParameter 传递给线程函数的参数。
dwCreationFlags 如果是0,线程创建后立即进行调度。如果是CREATE_SUSPENDED,系统对它进行初始化后暂停该线程的运行。
LpThreadId 用来存放系统分配给新线程的ID。
4. 如何终止线程的运行?
(1) 线程函数返回(最好使用这种方法)。
这是确保所有线程资源被正确地清除的唯一办法。
如果线程能够返回,就可以确保下列事项的实现:
•在线程函数中创建的所有C++对象均将通过它们的撤消函数正确地撤消。
•操作系统将正确地释放线程堆栈使用的内存。
•系统将线程的退出代码设置为线程函数的返回值。
•系统将递减线程内核对象的使用计数。
(2) 调用ExitThread函数(最好不要使用这种方法)。
该函数将终止线程的运行,并导致操作系统清除该线程使用的所有操作系统资源。但是,C++资源(如C++类对象)将不被撤消。
(3) 调用TerminateThread函数(应该避免使用这种方法)。
TerminateThread能撤消任何线程。线程的内核对象的使用计数也被递减。TerminateThread函数是异步运行的函数。如果要确切地知道该线程已经终止运行,必须调用WaitForSingleObject或者类似的函数。当使用返回或调用ExitThread的方法撤消线程时,该线程的内存堆栈也被撤消。但是,如果使用TerminateThread,那么在拥有线程的进程终止运行之前,系统不撤消该线程的堆栈。
(4) 包含线程的进程终止运行(应该避免使用这种方法)。
由于整个进程已经被关闭,进程使用的所有资源肯定已被清除。就像从每个剩余的线程调用TerminateThread一样。这意味着正确的应用程序清除没有发生,即C++对象撤消函数没有被调用,数据没有转至磁盘等等。
一旦线程不再运行,系统中就没有别的线程能够处理该线程的句柄。然而别的线程可以调用GetExitcodeThread来检查由hThread标识的线程是否已经终止运行。如果它已经终止运行,则确定它的退出代码。
fantom
2002-01-18
打赏
举报
回复
我不是要问参数的意思,而是.....(见上面)
create
thread
函数用法详解
详细介绍了
create
thread
函数 在程序中的运用 对于c++多线程的学习有很大帮助
如何
使用
Create
Thread
()创建每个具有不同
Thread
Proc()函数的多线程?
创建一个线程过程数组,例如:DWORD WINAPI my
Thread
ProcA(LPVOID p){DWORD dw =(DWORD)p; return dw;} DWORD WINAPI my
Thread
ProcB(LPVOID p){DWORD dw =(DWORD)p; return dw * dw;}无效的
Create
My
Thread
s(LP
THREAD
_START_ROUTINE myProc [],int max_number,...
_begin
thread
ex与
Create
Thread
区别
并深入分析
Create
Thread
与_begin
thread
ex的本质区别,相信阅读本文后你能轻松的
使用
多线程并能流畅准确的回答
Create
Thread
与_begin
thread
ex到底有什么区别,在实际的编程中到底应该
使用
Create
Thread
还是_begin
thread
ex?
多线程同步演示(采用
Create
Thread
()和WaitForMultipleObjects()函数)
采用多线程技术,
使用
Create
Thread
WaitForMultipleObjects函数等,实现了5个人赛跑比赛的模拟,并统计比赛结果。是一个比较好的多线程的演示。
CWin
Thread
与多线程
使用
这是一个关于CWin
Thread
以及利用继承自CWin
Thread
使用
多线程的程序!1,尽量
使用
DECLARE_DYN
CREATE
,这样能够动态创建。2,继承自CWin
Thread
,所以可以
使用
Create
Thread
()函数进行线程创建,在最开始我被书上的AfxBegin
Thread
(RUNTIME_CLASS(CMyClass))误导了,还以为一定要按照这种方式创建线程呢。3,查MSDN的同时,也要注意思考C++的机制,这样才能有的放矢地顺利解决问题。
Delphi
5,392
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章