开发平台(Platform): (Ex: Win10, Linux, ...)
Linux Centos 7
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
G++ 4.8.5
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
纯 C++11
使用 #include <thread>
问题(Question):
想要使用 Thread 加速现有资料计算
不知道该如何开始 ..
程式码(Code):(请善用置底文网页, 记得排版)
现有程式码大至如下
int max_score = 0
for( int a = 0 ; a < 10 ; ++a ) {
for( int b = 0 ; b < 10 ; ++b ) {
int score = algorithm(a,b);
if ( score > max_score ) { max_score = score; }
}
}
简单来说 algorithm 会带入 a,b 全部组合
也就是 100 种排列,经过算法计算后得到 score
我只需要计算最大 score 值
上述程式运作良好
但实际资料大概上亿种组合
每次运算约 0.01 秒,耗费时间仍可观
看过一些文章都是平行做两件不同 function
我要计算同个 function 而且需要比较结果
找不到类似的 example (包含限制 thread 数量等)
目前机台只有四核心可用
想要透过 thread 加速,不知道该从何入手
希望板友能提供一些简易说明
(有看过需要使用到 lock / unlcok 或是 mutex .. 因为要避免 race condition)
感谢 :)