※ 引述《DRLai (蘇打)》之銘言:
: 遇到的問題:
: 因為我的程式需要大量的運算,剛好系統擁有八核心
: 想要透過多核心處理機制
: 之前使用OpenMP,但是OpenMP不支援iterator
: 想請問是否有其他類似OpenMP的函式庫可用
: (希望能支援iterator的@~@)
因為支援 iterator 是 3.0 的
2.0 只有 for (int ...)
不過腦筋轉一下應該知道可以怎麼用吧
#pragma omp parallel
{
size_t nThreadMax = omp_get_num_threads ();
size_t nThreadCur = omp_get_thread_num ();
std::list <long> ::iterator it = kList.begin ();
for (size_t i = 0; it != kList.end () && i < nThreadCur; ++it, ++i);
while (it != kList.end ())
{
std::cout << *it << std::endl;
for (size_t i = 0; it != kList.end () && i < nThreadMax; ++it, ++i);
}
}
甚至可以寫成 template for_each 方式
--
不過我個人不是很喜歡 template 這種東西就是了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.44.179.47
※ 編輯: wowtiger 來自: 114.44.179.47 (10/25 00:50)