А ещё вот как придумал:
Код:
![Выделить весь код](images/misc/selectcode.png)
struct thr_start_struct
{
Object* obj;
void (Object*::mbr)();
};
void threaded_proc(thr_start_struct* st)
{
(st->obj->*st->mbr)();
}
void start_threaded(Object* obj1, void (Object*::mbr1)())
{
thr_start_struct st;
st.obj = obj1;
st.mbr = mbr1;
_beginthread((void(*)(void*))threaded_proc, &st, 0x10000);
}
...
class A : public Object
{
void priv_foo()
{
...
}
public:
void foo()
{
...
}
void parallel_it()
{
start_threaded(this, (void(Object::*)())priv_foo);
}
};
start_threaded(this, (void(Object::*)())foo);
Но такой подход не позволяет управлять потоком (А также синхронизироваться).