gpt4 book ai didi

c++ - 为可变数量的内核编写多线程程序

转载 作者:行者123 更新时间:2023-11-27 23:19:21 25 4
gpt4 key购买 nike

我正在编写一个程序,其中有 4 个线程的范围。我正在使用 VC++ 6.0 并且不想仅使用 VC++ 的任何库。 (按规则)最佳线程数应根据内核数决定。

如何编写根据不同核数创建不同线程数的代码???

我要遵循下表

Cores | Threads
---------------
1 | 2
2 | 3
3+ | 4

有 1 个 GUI 和 3 个工作线程。所有工作线程都使用循环缓冲区。我正在考虑按如下方式实现 3 个工作线程。

  1. 从文件中读取 2. 处理文件 3. 处理后创建一个新文件。

所有这 3 个步骤都是针对每个输入文件按顺序完成的。

会有大量文件需要处理(1000+)

我知道如何检测核心。也可以有 if then else 方式。但是按照“if then else”的方式管理代码似乎将是一项艰巨的任务。

在这种情况下是否有任何标准的方法来管理代码。

最佳答案

你可以使用 std::hardware_concurrency :

#include <iostream>
#include <thread>

int main() {

std::cout << "Number of available cores on this system (hint): "
<< std::thread::hardware_concurrency() << "\n";

}

然后启动相应数量的std::threads .

关于c++ - 为可变数量的内核编写多线程程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14424770/

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