<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错]]></title><description><![CDATA[<p dir="auto">参照<a href="https://dev59.com/Eb7pa4cB1Zd3GeqP6dBw" rel="nofollow ugc">std::for_each在GCC上和std::execution::par_unseq一起使用无法工作， 但在MSVC上可以工作</a>  ，我按照提供的解决方案进行了尝试</p>
<pre><code class="language-cmake">#CMakeLists.txt
#指定编译器路径
set(CMAKE_C_COMPILER gcc) 
set(CMAKE_CXX_COMPILER g++)
#设置C++标准
set(CMAKE_CXX_SCAN_FOR_MODULES ON) ##使用模块
##使用std模块
set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "d0edc3af-4c50-42ea-a356-e2862fe7a444")
set(CMAKE_CXX_STANDARD 23)
#设置项目名
project(MyProject LANGUAGES CXX)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# 启用调试符号
set(CMAKE_BUILD_TYPE Debug)
#设置编译器参数
if(CMAKE_BUILD_TYPE MATCHES "Debug")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0")
elseif(CMAKE_BUILD_TYPE MATCHES "Release")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
endif()

# 启用C++20模块支持
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmodules")
endif()

find_package(TBB)
set(CMAKE_CXX_MODULE_STD 1)
add_executable(app src/main.cpp)

#添加依赖关系
target_link_libraries(app fft_module TBB::tbb)

</code></pre>
<p dir="auto">我的TBB版本为2021.11.0，执行如下代码</p>
<pre><code class="language-c++">//main.cpp
import std;

int main() {
    std::vector&lt;int&gt; foo;
    foo.reserve(1000);
    for (int i = 0; i &lt; 1000; i++) {
        foo.push_back(i);
    }

    std::for_each(std::execution::par_unseq,
									foo.begin(), foo.end(),
										[](auto &amp;&amp;item) {
										std::cout &lt;&lt; item &lt;&lt; std::endl;
										std::random_device dev;
										std::mt19937 rng(dev());
										std::uniform_int_distribution&lt;std::mt19937::result_type&gt; dist6(10, 100);
										std::this_thread::sleep_for(std::chrono::milliseconds(dist6(rng)));
										std::cout &lt;&lt; "Thread ID: " &lt;&lt; std::this_thread::get_id() &lt;&lt; std::endl;
									});
}	
</code></pre>
<p dir="auto">打印出的线程id都是一致的，但是当我在import std; 前加入#include&lt;tbb/tbb.h&gt;；时 编译器会给我报出一大段类型冲突的错误，我才刚刚尝试使用C++20(仅学习了语言，非计算机专业)进行数值计算程序的开发工作，基础比较薄弱，如果大佬有解决方案，希望能稍微解释的详细些。</p>
]]></description><link>http://forum.d2learn.org/topic/133/求助-g-15-1使用std-execution对标准库算法加速遇到的问题-引入tbb头文件报错</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 14:08:15 GMT</lastBuildDate><atom:link href="http://forum.d2learn.org/topic/133.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 Sep 2025 04:08:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错 on Sat, 20 Sep 2025 02:58:40 GMT]]></title><description><![CDATA[<p dir="auto"><a class="mention plugin-mentions-user plugin-mentions-a" href="http://forum.d2learn.org/uid/3">@SPeak</a> 在 <a href="/post/585">求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错</a> 中说：</p>
<blockquote>
<p dir="auto">如果只是使用C++23, 不一定要使用import std/模块特性 (tbb目前本身没有支持/适配</p>
</blockquote>
<p dir="auto">谢谢回复，我大概是明白了，看起来错误似乎来源于同时#include 标准库头文件，和import std; 而TBB库中会引入标准库的头文件。</p>
]]></description><link>http://forum.d2learn.org/post/586</link><guid isPermaLink="true">http://forum.d2learn.org/post/586</guid><dc:creator><![CDATA[JFH-CAE]]></dc:creator><pubDate>Sat, 20 Sep 2025 02:58:40 GMT</pubDate></item><item><title><![CDATA[Reply to 求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错 on Sat, 20 Sep 2025 01:30:37 GMT]]></title><description><![CDATA[<p dir="auto">如果只是使用C++23, 不一定要使用import std/模块特性 (tbb目前本身没有支持/适配</p>
]]></description><link>http://forum.d2learn.org/post/585</link><guid isPermaLink="true">http://forum.d2learn.org/post/585</guid><dc:creator><![CDATA[SPeak]]></dc:creator><pubDate>Sat, 20 Sep 2025 01:30:37 GMT</pubDate></item><item><title><![CDATA[Reply to 求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错 on Sat, 20 Sep 2025 05:44:18 GMT]]></title><description><![CDATA[<p dir="auto">目前来看tbb应该还没对 c++ module进行适配<br />
tbb.h 和 import std在一个模块混用会报错</p>
<p dir="auto">如果非要使用 import std功能的话 需要自己做一个 中间层 wrapper tbb的一些接口 ( 所有涉及tbb的功能在这个wrapper里实现 其他地方import 这个 wrapper 来使用功能) 但是这里面可能有不少坑 要踩</p>
<p dir="auto">下面是一个最小示例</p>
<p dir="auto"><strong>tbb.cppm</strong></p>
<pre><code class="language-cpp">module;

#include &lt;tbb/tbb.h&gt;
#include &lt;vector&gt;
#include &lt;iostream&gt;

export module tbb;

export namespace tbb {
    void init_vec(std::vector&lt;int&gt;&amp; vec) {
        if (vec.empty()) return;
        tbb::parallel_for(0, static_cast&lt;int&gt;(vec.size()), [&amp;](int i) {
            vec[i] = i;
        });
        std::cout &lt;&lt; "Vector initialization complete." &lt;&lt; std::endl;
    }
}
</code></pre>
<p dir="auto"><strong>main.cpp</strong></p>
<pre><code class="language-cpp">import std;
import tbb;

int main() {
    std::vector&lt;int&gt; data(1000);
    tbb::init_vec(data);
    std::cout &lt;&lt; "First 10 elements: ";
    for (int i = 0; i &lt; 10; ++i) {
        std::cout &lt;&lt; data[i] &lt;&lt; " ";
    }
    return 0;
}
</code></pre>
<hr />
<p dir="auto">具体工程示例: <a href="https://github.com/Sunrisepeak/TBBtest" rel="nofollow ugc">https://github.com/Sunrisepeak/TBBtest</a></p>
]]></description><link>http://forum.d2learn.org/post/584</link><guid isPermaLink="true">http://forum.d2learn.org/post/584</guid><dc:creator><![CDATA[SPeak]]></dc:creator><pubDate>Sat, 20 Sep 2025 05:44:18 GMT</pubDate></item><item><title><![CDATA[Reply to 求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错 on Fri, 19 Sep 2025 15:49:38 GMT]]></title><description><![CDATA[<p dir="auto"><a class="mention plugin-mentions-user plugin-mentions-a" href="http://forum.d2learn.org/uid/70">@JFH-CAE</a> 在 <a href="/post/582">求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错</a> 中说：<br />
<a href="https://github.com/JFH-CAE/TBBtest" rel="nofollow ugc">https://github.com/JFH-CAE/TBBtest</a></p>
]]></description><link>http://forum.d2learn.org/post/583</link><guid isPermaLink="true">http://forum.d2learn.org/post/583</guid><dc:creator><![CDATA[JFH-CAE]]></dc:creator><pubDate>Fri, 19 Sep 2025 15:49:38 GMT</pubDate></item><item><title><![CDATA[Reply to 求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错 on Fri, 19 Sep 2025 14:23:20 GMT]]></title><description><![CDATA[<p dir="auto">谢谢回复，我已经将最小可复现示例工程放入公共仓库https://github.com/JFH-CAE/TBBtest，系统、工具链版本和错误信息已经放在readme中。</p>
]]></description><link>http://forum.d2learn.org/post/582</link><guid isPermaLink="true">http://forum.d2learn.org/post/582</guid><dc:creator><![CDATA[JFH-CAE]]></dc:creator><pubDate>Fri, 19 Sep 2025 14:23:20 GMT</pubDate></item><item><title><![CDATA[Reply to 求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错 on Fri, 19 Sep 2025 09:29:55 GMT]]></title><description><![CDATA[<p dir="auto">可以补充一下下面的信息:</p>
<ul>
<li>系统和工具链版本(gcc/cmake...</li>
<li>报错的信息</li>
<li>把最小可复现示例工程放到github上的一个仓库里, 方便其他人获取调试</li>
<li>做过哪些尝试, 以及怀疑可能导致问题的原因</li>
</ul>
]]></description><link>http://forum.d2learn.org/post/581</link><guid isPermaLink="true">http://forum.d2learn.org/post/581</guid><dc:creator><![CDATA[SPeak]]></dc:creator><pubDate>Fri, 19 Sep 2025 09:29:55 GMT</pubDate></item><item><title><![CDATA[Reply to 求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错 on Fri, 19 Sep 2025 04:30:04 GMT]]></title><description><![CDATA[<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;tbb/tbb.h&gt;

int main()
{
	std::vector&lt;int&gt; foo(1000);
	tbb::parallel_for(0, 1000, [&amp;](int i) {
		foo[i] = i;
		std::cout &lt;&lt; i &lt;&lt; std::endl;
	});	
}
</code></pre>
<p dir="auto">是可以正常工作的。</p>
]]></description><link>http://forum.d2learn.org/post/580</link><guid isPermaLink="true">http://forum.d2learn.org/post/580</guid><dc:creator><![CDATA[JFH-CAE]]></dc:creator><pubDate>Fri, 19 Sep 2025 04:30:04 GMT</pubDate></item></channel></rss>