WIN32 API 多线程同时运行

2025-05-18 11:31:12
推荐回答(2个)
回答1:

线程是否会同时运行,取决于两个重要因素:

  1. 你的 CPU 是否拥有两个物理运算核心

  2. 你的操作系统此时正在进行怎么样的作业调度

单核 CPU 是永远无法做到两个线程同时运行的,因为他只有一个核心;

同一时刻只能运行一个线程;

其次,就算你拥有双核 CPU,可以在同一时刻运行两个线程;

但是系统内部还有很多其他程序和线程正在运行,它们也会占据 CPU 时间片段;

除非整个系统就剩下你的两个线程,否则很难出现你的进程里面两个线程都同时运行的情况;

====================================

CreateThread 创建线程之后,新的线程一般都不是马上运作的;

而是等待 CPU 分配到时间片才会开始运行;

所以,如果你想要同时启动线程,可以用 WaitForSingleObject 这样子的内核函数;

虽然可以保证线程可以同时启动,却永远无法保证线程可以同时运行;

回答2:

有更详细的代码吗?

会不会是你的主线程已关闭,在CloseHandle(hThread);之前加句getchar();试试