我一直在我的(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或类似的库来实现项目一致性的情况下完成此任务)
答案 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"]);