Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемма с функцией Listen() в классе CSocket, Может я чегото не знаю? 
:(
    Опции темы
Rapalex
Дата 4.4.2006, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 6
Всего: 8



Цитата

если вы больше не хотите слушать сеть и принимать запросы, то вы по нажатию кнопки просто должны убить слушающий сокет.


КАК? если сокет слушает в потоке, который можно убить только из потока.

Dreamer_0x01, объясни мне как довать команды потоку, message_map или чтото такое.

Заранее благодарен.


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Dreamer_0x01
Дата 4.4.2006, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 12



Цитата(Rapalex @ 4.4.2006, 12:12 Найти цитируемый пост)
Dreamer_0x01, объясни мне как довать команды потоку, message_map или чтото такое.


Вообще, есть такая функция, как PostThreadMessage(). Но она больше подходит для интерфейсных потоков. Кроме того, она не синхронная (правда, в одном из топиков я делал ее синхронный аналог..)

А самым простым решением будет завести некоторую структуру, доступную для нескольких потоков, но данные в ней должны читаться/зхаписываться только с использованием объектов синхронизации.
То есть механизм приблизительно таков:

1. Рабочий поток может иметь несолько "состояний", которые характеризуются параметрами структуры. Каждый какой-то период времени поток заходит в объект синхронизации, считывает параметры из структуры,и выходит их объета синхронизации.
2. Главный поток , при совершении пользователем каких-то действий, заходит в объект синхронизации, переписывает параметры структуры надлежащим образом (которые при считывании рабочим потоком введут его в заданное состояние), и выходит из объекта синхронизации.



--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Rapalex
Дата 4.4.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 6
Всего: 8



А как нацывается этот
Цитата

объект синхронизации

Должен же быть какой-то класс MFC для этого?


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Dreamer_0x01
Дата 4.4.2006, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 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. Все, что нужно для взаимодействия потоков,она расписала по полочкам ;)



--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.