Как с помощью WTL создать новый рабочий поток для выполнения в нём некоторых ресурсоёмких вычислений?
Здравствуйте, zabriski, Вы писали:
Z>Как с помощью WTL создать новый рабочий поток для выполнения в нём некоторых ресурсоёмких вычислений?
Если хочется использовать всю мощь ATL

, то я делал так:
// MyWorkerThread.h
class CMyWorkerThread :
public IWorkerThreadClient
{
public:
CMyWorkerThread();
~CMyWorkerThread();
// IWorkerThreadClient
HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);
HRESULT CloseHandle(HANDLE hObject);
private:
CWorkerThread<> m_thread;
};
// MyWorkerThread.cpp
CMyWorkerThread::CMyWorkerThread()
{
m_thread.Initialize();
}
CMyWorkerThread::~CMyWorkerThread()
{
m_thread.Shutdown();
}
HRESULT CMyWorkerThread::Execute(DWORD_PTR dwParam, HANDLE hObject)
{
// TODO: Do something
return S_OK;
}
HRESULT CMyWorkerThread::CloseHandle(HANDLE hObject)
{
if (!::CloseHandle(hObject))
return AtlHresultFromLastError();
return S_OK;
}
// Использование
// Поехали
CMyWorkerThread thread;
Здесь интересней
http://www.codeproject.com/atl/newinatl7.asp... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Здравствуйте, SnowMan, Вы писали:
SM>Здравствуйте, zabriski, Вы писали:
Z>>Как с помощью WTL создать новый рабочий поток для выполнения в нём некоторых ресурсоёмких вычислений?
SM>Может не так понял, но разве CreateThread уже отменили?..
Рихтер говорит, что надо использовать beginthreadex.
... << RSDN@Home 1.1.4 beta 3 rev. 193>>
Здравствуйте, zabriski, Вы писали:
Z>Как с помощью WTL создать новый рабочий поток для выполнения в нём некоторых ресурсоёмких вычислений?
здесь есть обертка
... << RSDN@Home 1.1.4 beta 6a rev. 436>>