前言
之前有看到网上的文章,说在linux中一个线程占用8M的内存。
也有文章说这种说法不对。
这里简单看一下,windows和linux中,一个线程占多大。
我的方法是,启动一个进程,开启线程之前,查看进程的内存,开启20个线程后,再查看进程内存占用。
windows
代码
#include <iostream>
#include <thread>
#include <Windows.h>
#include <atomic>
#include <vector>
#include <mutex>
std::atomic_bool bRunning;
std::mutex mtx;
void output_in(std::thread::id id)
{
std::lock_guard<std::mutex> lg(mtx);
std::cout << "child thread:" << id << " in." << std::endl;
}
void output_out(std::thread::id id)
{
std::lock_guard<std::mutex> lg(mtx);
std::cout << "child thread:" << id << " out." << std::endl;
}
void _func(void)
{
output_in(std::this_thread::get_id());
while (bRunning.load())
{
Sleep(2000);
};
output_out(std::this_thread::get_id());
}
int main()
{
bR

本文通过在Windows和Linux环境下创建线程并检测内存变化,发现Linux中每个线程大约占用8MB的虚拟内存,而Windows中的内存增量较小,显示了两者在内存管理上的差异。

466

被折叠的 条评论
为什么被折叠?



