在类函数中将参数传递给_beginthread

时间:2013-04-06 01:00:20

标签: c++ windows multithreading beginthread

我一直在我的(windows)C ++类中使用_beginthread来创建线程。据我所知,要使用_beginthread并在类中传递成员函数,必须遵循一个相当钝的包装协议,例如:

class MyClass
{
public:
    void fun_1()
    {  
        _beginthread(&MyClass::fun_2_wrapper, 0, static_cast<void*>(this));
    }

private:
    void fun_2()
    {
        printf("hello");  
    }  

    static void __cdecl fun_2_wrapper(void* o)
    {
        static_cast<MyClass*>(o)->fun_2();
    }
};

我一直无法将此模型转换为接受我的线程函数参数的模型。例如,如果我希望我的线程函数改为:

void fun_2(int a)

我如何正确调整我的函数调用? (注意,我试图在不使用boost :: thread或类似的库来实现项目一致性的情况下完成此任务)

1 个答案:

答案 0 :(得分:0)

您可以包装将传递给结构的参数,然后将其传递给函数。

示例:

var arr = {
    "name":"John",
    "age":30,
    "cars":[ "Ford", "BMW", "Fiat" ]
}
console.log("before test: ",arr["age"]);
arr["age"] = 70;
console.log("after test: ",arr["age"]);