GetProcessID vs GetThreadID

GetProcessID vs GetThreadID

本文关键字:GetThreadID vs GetProcessID      更新时间:2023-10-16

当我执行以下代码-:

#include<iostream>
#include<windows.h>
using namespace std;
int main()
{
    cout << GetCurrentProcessId() << endl;
    cout << GetCurrentThreadId() << endl;
}

得到以下输出:

1160
4316

我的问题是-:

  • 既然这是一个独立的进程,它是如何有一个"线程id"?
  • 为什么输出的两个整数不一样?

我在Windows 7上使用c++ 14和TDM-GCC 4.9.1编译器

既然你使用的是Windows系统,那么MSDN必须这么说:

进程和线程

应用程序由一个或多个进程组成。用最简单的术语来说,进程就是一个正在执行的程序。在进程的上下文中运行一个或多个线程。线程是操作系统为其分配处理器时间的基本单元。一个线程可以执行进程代码的任何部分,包括当前正在被另一个线程执行的部分。

关于进程和线程

每个进程提供执行程序所需的资源。一个进程有一个虚拟地址空间、可执行代码、系统对象的打开句柄、一个安全上下文、一个唯一的进程标识符、环境变量、一个优先级类、最小和最大工作集大小以及至少一个执行线程。每个进程都由一个线程启动,通常称为主线程,但可以从它的任何线程创建额外的线程。

线程是进程中可以被调度执行的实体。一个进程的所有线程共享它的虚拟地址空间和系统资源。此外,每个线程都维护异常处理程序、调度优先级、线程本地存储、唯一的线程标识符和一组结构,系统将使用这些结构保存线程上下文,直到它被调度。线程上下文包括线程的机器寄存器集、内核堆栈、线程环境块和线程进程地址空间中的用户堆栈。线程也可以有自己的安全上下文,可用于模拟客户端。

对于Windows,每个进程至少有一个线程,也可以有多个线程。Windows为进程和线程使用单独的id