如题用的开源库jthread(成员函数Start创建线程 有纯虚函数Thread 就是线程函数里掉的)class A : public jthread
{
Thread(){..};
};
class B : public jthread
{
A  a;
Thread(){..};
Start()
{
jthread::Start();
a.Start();
}
};B b1,b2;
b1.Start();
b2.Start();如果注释掉蓝字部分,也就是线程b1、b2启动 线程b1.a、b2.a 不启动  正常
如过不注释就会出错 出错地方在下面蓝字部分,这里是b1.a的线程函数(此时b2.Start()还没运行到)#ifndef _WIN32_WCE
UINT __stdcall JThread::TheThread(void *param)
#else
DWORD WINAPI JThread::TheThread(void *param)
#endif // _WIN32_WCE
{
JThread *jthread;
void *ret; jthread = (JThread *)param;

jthread->continuemutex2.Lock();
jthread->runningmutex.Lock();
jthread->running = true;
jthread->runningmutex.Unlock();

jthread->continuemutex.Lock();
jthread->continuemutex.Unlock();

ret = jthread->Thread();
jthread->runningmutex.Lock();
jthread->running = false;
jthread->retval = ret;
CloseHandle(jthread->threadhandle);
jthread->runningmutex.Unlock();
return 0;
}
; Find next lower page and probe
cs20:
        sub     eax, _PAGESIZE_         ; decrease by PAGESIZE
        test    dword ptr [eax],eax     ; probe page.
        jmp     short cs10_chkstk endp        end