GetProcessID vs GetThreadID
GetProcessID vs GetThreadID
当我执行以下代码-:
#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
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 数据成员SFINAE的C++17测试:gcc vs clang
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 正在VS调试器中监视映射条目
- Confusion: decltype vs std::function
- 将IBM Rhapsody模型集成到VS 2019中
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- 修改 VS Code 中的默认C++代码段
- 如何使用c++在VS 2019上运行SQL查询
- vs 2015 constexpr变量不恒定,但与2019相比还好吗
- 完美前进使用 std::forward vs RefRefCast
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- consteval wrapper vs. source_location
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- GetProcessID vs GetThreadID