Re[5]: AfxBeginThread и InitInstance()
От: Sergey_BG Россия  
Дата: 24.06.16 11:02
Оценка:
Здравствуйте, Evgeniy Skvortsov, Вы писали:
ES>Что за дичь ты написал?

Почему дичь? Я знаю MFC и многопоточность. Я понимаю, что спросил ТС.
Я написал следующее (может быть не совсем ясно):
1) у ТС есть функция GetTemp(). Если в ней и в функции SetTemp(...) поставить CSingleLock с СCriticalSection, то это заблокирует доступ второму потоку пока с переменной работает первый поток. И что самое интересное, если первый поток с переменной не работает, то не важно выполняет он, что либо, или нет. Метод будет вызван. В тоже время посылка сообщения другому потоку приведёт к тому, что SendMessage придётся ждать пока второй поток не войдет в режим ожидания очередного сообщения GetMessage etc. Именно в нём сработает SendMessage и только потом вернёт управление первому потоку. Что может быть достаточно долго, в зависимости от того, что делает поток. Т.е. плюс. Но есть один минус. Нужно быть уверенным, что поток не завершён. При посылке сообщения, правда тоже нужно знать, не завершился ли поток.
2) Есть ещё одна синхронизация которую нужно сделать. Это доступ к переменной потока. Так как по идее в любой момент поток может быть удалён (если стоит автоделит). Здесь тоже придётся принять некоторые меры.
Сергей
Отредактировано 24.06.2016 11:40 Sergey_BG . Предыдущая версия . Еще …
Отредактировано 24.06.2016 11:04 Sergey_BG . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.