static成员函数做线程时,需要读取多个非static变量值

static成员函数作线程时,需要读取多个非static变量值
static成员函数作为线程,由_beginthreadex创建。线程需要读取多个非static变量的值(只读不写)。有没有啥好办法?
中规中矩的,是用struct传递,但是需要多定义结构,以后维护也麻烦。
另一种是将this指针传递给static成员函数。但是,这违背了C++对static成员函数的规定,而且有互斥问题


不知道各路大神有啥好法子?
多线程 C++ static

------解决方案--------------------
引用:
static成员函数作为线程,由_beginthreadex创建。线程需要读取多个非static变量的值(只读不写)。有没有啥好办法?
中规中矩的,是用struct传递,但是需要多定义结构,以后维护也麻烦。
另一种是将this指针传递给static成员函数。但是,这违背了C++对static成员函数的规定,而且有互斥问题


不知道各路大神有啥好法子?


C++规定static函数没有隐含的this参数,因此不能直接文件非静态成员,但没有说过static函数不能访问任何对象的成员。
把this指针作为显式参数传递给你的static函数就行了,当然这时不能叫this了。

注意_beginthreadex函数第4个参数会被传递给你的static线程函数,把你的对象的指针传进去就行了。不过由于标准库中声明的类型是void*,你的线程函数收到参数后还要转换一下。

其实还是用boost::thread比较好,把对象指针传递给_beginthreadex>>>传递给线程函数>>>类型转换>>>调用对象成员函数这一过程都已经封装好了。