我正在使用一个支持线程的小型嵌入式 RTOS。我正在用 C++ 编程,并想创建一个类,它允许我将任何类的任意成员函数作为线程运行。RTOS 不直接支持从成员函数创建线程,但如果从线程中调用它们就可以正常工作。Boost::thread 在我的平台上不可用。
我目前正在通过一个朋友 thread_starter() 函数以临时方式启动线程,但似乎我必须为每个我想从中运行线程的类设置一个单独的线程。我当前的线程基类解决方案使用虚拟 run() 函数,但这有一个缺点,即我只能为一个类启动 1 个线程,并且仅限于 run() 函数 + 依次调用的任何内容(即我不能从 run() 优雅地运行任意函数)
理想情况下,我想要一个模板化的类“线程”,这样我就可以在类“X”成员函数中执行以下操作:
class X
{
run_as_thread(void* p)';
};
X x;
void* p = NULL;
template<X>
thread t(x, X::run_as_thread, p);
//somehow causing the following to be run as a thread :
x->run_as_thread(p);
很抱歉,如果以前在这里做过死,但我似乎只能找到使用 Boost::thread 来完成此操作的参考,而这对我来说是不可用的。我也无权访问堆,因此所有全局变量都必须是静态的。
非常感谢,
麦克风