Хотелось бы получить пояснения про то, как работает макрос AfxBeginThread, и что на самом деле происходит, допустим есть класс
class CPrintThread : public CWinThread
{
public:
afx_msg void OnWriteLog(WPARAM, LPARAM);
int Temp();
virtual BOOL InitInstance();
virtual int ExitInstance();
protected:
DECLARE_MESSAGE_MAP()
DECLARE_DYNCREATE(CPrintThread)
private:
int temp;
};
IMPLEMENT_DYNCREATE(CPrintThread, CWinThread)
BEGIN_MESSAGE_MAP(CPrintThread, CWinThread)
ON_THREAD_MESSAGE(WM_USER + 1, OnWriteLog)
END_MESSAGE_MAP()
void CPrintThread::OnWriteLog(WPARAM wParam, LPARAM lParam)
{
}
int CPrintThread::Temp()
{
return temp;
}
BOOL CPrintThread::InitInstance()
{
temp = 10;
return true;
}
int CPrintThread::ExitInstance()
{
return CWinThread::ExitInstance();
}
и где в программе:
CPrintThread* m_tPrint;
m_tPrint = (CPrintThread*)(AfxBeginThread(RUNTIME_CLASS(CPrintThread), THREAD_PRIORITY_BELOW_NORMAL, 0, 0));
int mytemp = m_tPrint->Temp();
поясните пожалуйста в каких потоках будут выполнятся функции InitInstance() и Temp(), и может ли получится так что mytemp окажется не равно 10 ?