Синхронизация рабочих потоков MFCC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Синхронизация рабочих потоков MFC

Сообщение Anonymous »

Я использую потоки MFC:
и основной поток, и рабочий поток используют одну и ту же функцию ReceiveResponse().
и я изменяю myMaster->configDone, чтобы рабочий поток выполнял разную работу в зависимости от значение myMaster->configDone.
проблема в том, что я могу изменить значение myMaster->configDone в своем основном потоке, но рабочий поток иногда будет получать данные, даже если myMaster->configDone != tComSts::COM_CFG_DONE. на мой взгляд, поскольку он не завершил цикл до того, как основной поток изменил значение myMaster->configDone.
что мне делать в этом случае, пожалуйста?
#include
#include

#define THREAD_DELAY_MS 100

class myClass;

WorkerThread::WorkerThread(myClass *pClassSession)
: m_pSession(pSession), m_hThread(nullptr)
{
}

WorkerThread::~WorkerThread()
{
}

BOOL WorkerThread::InitInstance()
{
m_hThread = AfxBeginThread(ThreadFunction, m_pSession, THREAD_PRIORITY_NORMAL, CREATE_SUSPENDED);

m_hThread->m_bAutoDelete = FALSE;

return TRUE;
}

int WorkerThread::ExitInstance()
{
return CWinThread::ExitInstance();
}

using ModeFieldBits = SetDaqListModePacket::ModeFieldBits;

UINT WorkerThread::ThreadFunction(LPVOID pParam)
{
myClass *myMaster = reinterpret_cast(pParam);

if (nullptr != myMaster)
{
while (true)
{
if (tComSts::COM_CFG_DONE == myMaster->configDone)
{
st_msg rmsg = {0};
myMaster->ReceiveResponse(true, TIMEOUT_RECEIVE, &rmsg);
}
else if (tComSts::COM_CFG_NONE == myMaster->configDone)
{
//do some work
}
else
{
//do nothing
}
}
}

return 0;
}


Подробнее здесь: https://stackoverflow.com/questions/783 ... ronisation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Синхронизация рабочих компонентов JMS Message Driven Bean
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как добавить полное диалоговое приложение MFC в качестве дочернего диалогового окна другого приложения MFC
    Anonymous » » в форуме C++
    0 Ответы
    50 Просмотры
    Последнее сообщение Anonymous
  • Как добавить полное диалоговое приложение MFC в качестве дочернего диалогового окна другого приложения MFC
    Anonymous » » в форуме C++
    0 Ответы
    65 Просмотры
    Последнее сообщение Anonymous
  • Как интегрировать Ribbonbar в приложение на основе MFC на основе MFC?
    Anonymous » » в форуме C++
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Ошибка синхронизации рабочих потоков данных Pod Python
    Anonymous » » в форуме Python
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»