c - 为什么线程被称为轻量级进程?

标签 c multithreading pthreads

线程是“轻量级”的,因为大部分开销已经通过创建其进程来完成。

我在其中一个教程中找到了这个。

有人可以详细说明它的确切含义吗?

最佳答案

线程是“轻量级”的说法 - 取决于平台 - 不一定可靠。

操作系统线程必须支持本地代码的执行,例如用 C 语言编写。因此它必须提供适当大小的堆栈,通常以兆字节为单位。因此,如果您启动了 1000 个线程(可能是为了支持 1000 个同时连接到您的服务器),在您开始执行任何实际工作之前,您的进程将需要 1 GB 的内存。

这在高度可扩展的服务器中是一个真正的问题,因此它们根本不使用线程,就好像它们是轻量级的一样。他们将它们视为重量级资源。他们可能会在池中创建有限数量的线程,并让它们从队列中获取工作项。

因为这意味着线程生命周期长且数量少,所以最好改用进程。这样您就可以实现地址空间隔离,并且不会出现资源耗尽的问题。

总而言之:警惕代表线程提出的“营销”声明。并行处理很棒(它将越来越重要),但线程只是实现它的一种方式。

关于c - 为什么线程被称为轻量级进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2267545/

相关文章:

使用POW计算不同数字类型的范围

c - 在编译时用单调序列初始化全局整数数组?

c - 在C中注册Lua类

python - 中断定时器

c++ - Visual C++ 中的线程

opencv - pthread并行处理

c,pthread_create 给出段错误?

C编程,无限循环意外停止

java - 异步for循环没有挂起

java - 同步对象在 notifyAll() 之前未被线程锁定