我正在一个嵌入式平台上进行一些线程相关的工作。这个平台提供了一个Thread
类,并且它有一个start
方法,可以接受一个函数指针,就像这样:
void do_in_parallel() {
// Some stuff to do in a new thread
}
Thread my_thread;
my_thread.start(do_in_parallel);
问题在于无法传递参数。1 我想通过创建一个抽象类来解决这个问题,称为
Thread2
,它继承Thread
(或者它可以只有一个Thread
作为实例数据)。
Thread2
将具有纯虚函数void run()
,目标是将其传递给Thread::start(void*())
,但我很快了解到成员函数指针具有不同的类型,不能像这样使用。我可以使run()
静态,但是那样我仍然不能拥有多个实例,这就打败了整个目的(更不用说您不能拥有虚静态函数)。是否有任何变通方法,而不需要更改原始的
Thread
类(考虑到它是我所困扰的库)?
1. 在许多情况下,全局变量可以是可用的解决方法,除了从相同的函数指针实例化多个线程的情况。在这种情况下,我想不出避免竞争条件的方法。
std::bind
或lambda。 - user4581301