c++回调函数跨线程的调用
在C++中,回调函数跨线程调用可以利用类成员方法的特性来实现。类成员方法在编译时会被转化成普通函数,并且在原第一个参数前插入指向对象本身的`this`指针。因此,可以将类成员方法作为线程回调函数,通过联合类将类成员方法指针转换为普通函数指针,然后传递给`_beginthread`函数来启动线程。
以下是一个示例代码:
```cpp
#include <stdio.h>
#include <process.h>
class TMyClass {
public:
    TMyClass(int nId, int nCount) : m_nId(nId), m_nCount(nCount) {}
    void _USERENTRY ThreadProc() {
        //根据m_nCount成员打印一排数字
        for (int i = 0; i < m_nCount; i++)
            printf("Class%d : %d\n", m_nId, i);
    }
    union {
        void (_USERENTRY *Threadproc)(void *);
        void (_USERENTRY TMyClass::*MemberProc)();
    } Proc;
};
int main(int argc, char*argv[]) {
    TMyClass MyClass1(1, 10), MyClass2(2, 5);
    // 转换,proc.ThreadProc就是对应的普通函数指针了
    Proc.MemberProc = &TMyClass::ThreadProc;
    // 开始线程,这里的proc.ThreadProc实际上是TMyClass::ThreadProc, 它要的this指针是我们给的&MyClass1
指针调用成员函数    _beginthread(proc.Threadproc, 4096, &MyClass1);
    _beginthread(proc.Threadproc, 4096, &MyClass2);
    system("pause");
    return 0;
}
```
在上述示例中,`TMyClass`类定义了一个`ThreadProc`类成员方法,并通过联合类将其指针转换为普通函数指针,然后传递给`