![]() |
|
![]() ![]() ![]() |
|
Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
КАК? если сокет слушает в потоке, который можно убить только из потока. Dreamer_0x01, объясни мне как довать команды потоку, message_map или чтото такое. Заранее благодарен. -------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Вообще, есть такая функция, как PostThreadMessage(). Но она больше подходит для интерфейсных потоков. Кроме того, она не синхронная (правда, в одном из топиков я делал ее синхронный аналог..) А самым простым решением будет завести некоторую структуру, доступную для нескольких потоков, но данные в ней должны читаться/зхаписываться только с использованием объектов синхронизации. То есть механизм приблизительно таков: 1. Рабочий поток может иметь несолько "состояний", которые характеризуются параметрами структуры. Каждый какой-то период времени поток заходит в объект синхронизации, считывает параметры из структуры,и выходит их объета синхронизации. 2. Главный поток , при совершении пользователем каких-то действий, заходит в объект синхронизации, переписывает параметры структуры надлежащим образом (которые при считывании рабочим потоком введут его в заданное состояние), и выходит из объекта синхронизации. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
А как нацывается этот
Должен же быть какой-то класс MFC для этого? -------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
самый простой объект синхронизации - это критическая секция. Правда, я не помню, как называется MFC-аналог критической секции CRITICAL_SECTION. (CCriticalSection по-моему)
А более сложные - на базе класса CSyncObject. (CEvent,CMutex,CSemaphore,CSingleLock,CMultiLock). Добавлено @ 14:25 А вообще, я развивал связанную с эим тему вот тут. http://forum.vingrad.ru/index.php?showtopic=80351&st=0 Начиная со второй страницы этой темы как раз есть несколько постов по этой тематике. Обрати внимания на ответы пользователя Earnest. Все, что нужно для взаимодействия потоков,она расписала по полочкам ;) -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |