Как безопасно запустить только один WorkerThread?
Существует ли для этого шаблон проектирования?
На самом деле я делаю так, мне кажется немного слишком сложно.
Код: Выделить всё
void CLogView::OnStartStoplogger()
{
m_bLogPtRun = !m_bLogPtRun; // (bool)
if (m_bLogPtRun)
{
// First check, if Thread is still running
if (!m_pLogPointThread)
{
m_pLogPointThread = AfxBeginThread(AddLogPointThread, this);
}
else
return; // Thread still running
}
else
{
if (m_pLogPointThread )
{
if (m_pLogPointThread) {
DWORD dwRET = WaitForSingleObject(m_pLogPointThread->m_hThread, /*INFINITE*/ 5000);
if (dwRET != WAIT_OBJECT_0)
MessageBox(_T("Could not finished LogPointThread"));
}
}
Источник: https://stackoverflow.com/questions/751 ... one-thread