gpt4 book ai didi

c++ - 我的 openmp 并行编程有什么问题

转载 作者:行者123 更新时间:2023-11-28 03:55:05 33 4
gpt4 key购买 nike

我有一个 url 队列,我正在传递给一个函数,它会抓取并获取 url 队列中的每个 url 应该是并行的,抓取是一个类,开始是我的函数,它会抓取 url,如果我运行程序中的每个 url 不是并行地一个接一个地执行

    while(!q.empty())
{
#pragma omp parallel for
{
for(int n=0; n<q.size(); ++n)
{
crawl.start(q.front());
q.pop();
}
}
}

输出

 http://www.bing.com
http://www.bing.com/?scope=images&amp;FORM=Z9LH
http://www.bing.com/?scope=news&amp;FORM=Z9LH2
http://www.bing.com/?scope=video&amp;FORM=Z9LH1
http://www.bing.com/explore?FORM=BXLH
http://www.google.co.in
http://www.google.co.in/advanced_search?hl=en
http://www.google.co.in/intl/en/about.html
http://www.google.co.in/intl/en/ads/
http://www.google.co.in/intl/en/privacy.html

似乎这个过程不是并行的,谁能告诉我如何并行执行此操作

最佳答案

我看到的每个例子和每次使用它时,我都将 #pragma 直接放在 for 之前:

#pragma omp parallel for
for(int n=0; n<q.size(); ++n) {
crawl.start(q.front());
q.pop();
}

你可以试一试。

我怀疑由于其他原因它不会像您希望的那样工作;设置的方式看起来所有线程都将立即从队列的前面成员开始,然后尝试弹出它......您将需要比您显示的更多的队列同步。

关于c++ - 我的 openmp 并行编程有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3921040/

33 4 0
文章推荐: android - CSS 新手 : CSS not rendering on Android but does render with Visual Studio Ripple Virtual Nexus (Galaxy)
文章推荐: c++ - 下沉的 DWebBrowserEvents2 事件似乎挂起编程导航
文章推荐: html - IE z-index 问题。 wmode透明不起作用