Win32线程——等待另一个线程结束

本文介绍了Win32线程中等待另一个线程结束的方法,包括Sleep(), GetExitCodeThread()轮询检查, WaitForSingleObject(), WaitForMultipleObjects()。特别强调了在GUI程序中如何处理等待,如MsgWaitForMultipleObjects()函数的应用,以确保线程同步和消息处理的平衡。" 132168469,11654619,使用R的igraph和Hmisc包与Gephi构建网络图,"['R语言', '网络可视化', '数据分析']
摘要由CSDN通过智能技术生成

《Win32多线程程序设计》–Jim Beveridge & Robert Wiener

“等待某个什么东西”是线程常常需要做的事。等待是线程的“必要之恶”
如果你没有等待线程结束就莽撞地结束程序,线程会被系统强制结束掉——在它完成它的工作之前。
由于让线程停工是操作系统的责任,很合理地我们会认为操作系统也有责任让其他线程知道某个线程停工了。

Sleep()

这个函数要求操作系统中止线程动作,直到渡过某个指定时间之后才恢复。

#include <stdio.h>
#include <Windows.h>

DWORD WINAPI Thread(void *arg) {
    // doing something
    return 0;
}

int main(void) {
    HANDLE hThread = CreateThread(NULL, 0, Thread, NULL, 0, NULL);
    Sleep(?); // 不可能事先知道要等待Thread多久
    CloseHandle(hThread);
    return 0;
}

GetExitCodeThread()轮询检查

使用 GetExitCodeThread() 可以决定一个线程是否还在执行。

#include <stdio.h<
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值