gpt4 book ai didi

c++ - 如何使用多线程使系统崩溃

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:28 26 4
gpt4 key购买 nike

我开始学习 C++ 中的多线程,我试图通过占用所有处理器来崩溃和阻塞我的系统。事实上,我尝试创建许多线程并运行它们,但我没有得到我需要的东西

void func()
{
std::cout << "C++11 MULTITHREADING\n";
for (int i = 1; i < INT_MAX; i++)
{
for (int j = 1; j < INT_MAX; j++)
std::cout << i / j << " ";
}
}


int main()
{

for (int i = 0; i < INT_MAX; i++)
{
std::thread t(func);
t.join();
}
std::cout << " ***END OF A PROGRAM***\n";

return 0;
}

最佳答案

t.join();

将要将您刚刚创建的线程“加入”到当前线程中。这意味着您将运行整个函数并在创建下一个线程之前返回。这与做的一样:

for (int i = 0; i < INT_MAX; i++)
{
func();
}

如果您想产生多个线程并运行它们,那么将它们存储在 std::vector 中,然后在创建它们之后对所有线程调用 join() .

std::vector<std::thread> threads;
threads.reserve(INT_MAX); // save reallocations
for (int i = 0; i < INT_MAX; i++)
{
threads.push_back(std::thread(func));
}

for (int i = 0; i < INT_MAX; i++)
{
threads[i].join();
}

作为Basile Starynkevitch's answer指出您将需要创建更少的线程以避免系统错误。

关于c++ - 如何使用多线程使系统崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32311225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com