gpt4 book ai didi

c++ - 是否可以编写可以在 HPX 和 C++1x 线程之间切换的代码?

转载 作者:行者123 更新时间:2023-11-30 01:42:44 25 4
gpt4 key购买 nike

因为 hpx 之间的 API 非常相似和 #include<thread>是否有可能让相同的代码能够运行 hpx#include<thread>

因为 boost 是 hpx 的要求,我的用例是有些系统不允许提升,有些是,我希望在两者上运行相同的代码,但使用 hpx如果可能的话。

假设我只使用 hpx 和线程中的功能,是否有这样做的示例?我什至可以通过#ifdef吗? ?

最佳答案

如果两个库的 API 完全相同,您可以使用有条件编译的类型别名:

#if defined(USE_HPX_THREADS)

#include <hpx/thread.hpp>

namespace my_library
{
using my_thread = hpx::thread;
}

#elif defined(USE_STD_THREADS)

#include <thread>

namespace my_library
{
using my_thread = std::thread;
}

#endif

或者,如果 API 不同,您可以创建自己的同类接口(interface),根据预处理器定义使用不同的实现:

class my_thread 
{
private:
// "Conditional type alias" like the example above.
my_thread_handle _thread;

public:
void join();
};

#if defined(USE_HPX_THREADS)

void my_thread::join()
{
_thread.hpx_join();
}

#elif defined(USE_STD_THREADS)

void my_thread::join()
{
_thread.std_join();
}

#endif

将不同文件中的实现分开可能是个好主意。查看像 SFML 这样的库 for a real-world example (Unix 和 Win32 文件夹)

关于c++ - 是否可以编写可以在 HPX 和 C++1x 线程之间切换的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39169532/

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