HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > синхронизация vcl + потоки
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
marikcool
Житель форума

Дата регистрации: Jul 2011
Проживает: kz
Сообщений: 1522
Возраст: 39

Рейтинг



синхронизация vcl + потоки

Такая задача, есть vcl форма и отдельный udp поток, где и работает вся логика/прием/передача приложения.
Необходимо наиболее эффективно передать часть обновленных данных с udp потока в форму ( чтобы поток не ждал отрисовки формы) , думаю создать стэк сообщений обрамленный критической секцией, с потока писать в секцию, отправлять пост сообщение форме, она забирает все что в стеке ну и перересовывается. Немогу найти инфы как делают это в дургих приложенияъ, есть идеи получше или более верное решение данной задачи?

Сообщить модератору | IP: Записан
Сообщение: 87463

Старое сообщение 02-12-2011 08:01
- За что?
Scrama
СССР с интернетом и олигархами!

Дата регистрации: May 2006
Проживает: Прииртышье
Сообщений: 3737

Рейтинг



Награды
 
[1 награда]


Поток как создаешь? Через vcl-класс или через _beginthreadex? В первом случае есть vcl-ный же механизм синхронизации, во втором нужно как-то иначе изголяться - у меня там просто промежуточный класс, в котором очередь сообщений, с одной стороны пополняется потоком из пайпов, с другой выгребается потоком остальной логики. Не уверен, что в таком случае не может быть косяка из-за одновременного удаления/записи в очередь, но пока что глюков не было.

__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran

Сообщить модератору | IP: Записан
Сообщение: 87466

Старое сообщение 02-12-2011 08:21
- За что?
marikcool
Житель форума

Дата регистрации: Jul 2011
Проживает: kz
Сообщений: 1522
Возраст: 39

Рейтинг



vcl синхронизация это sendmessage, тут потоку придется зависнуть и ждать пока форма отрисуется.
без ожидания результата можно отправлять postmessage, но передать можно указатель, ну или любые данные весом 2 байта.

ну у меня что то как в твоем случае, вот счас пишу как раз промежуточный класс стэк, но помещу его в критическую секцию.
если у тебя глюков нет то либо все шустро работает либо класс который используешь потокобезопасный.

еще интересует точный ответ, можно ли без последствий писать в один удп сокет данные с разных потоков? у меня на практике все работает но бывает редко косяки, просто если есть глюки 1 на 1000000 то переделаю.

Сообщить модератору | IP: Записан
Сообщение: 87467

Старое сообщение 02-12-2011 08:39
- За что?
Scrama
СССР с интернетом и олигархами!

Дата регистрации: May 2006
Проживает: Прииртышье
Сообщений: 3737

Рейтинг



Награды
 
[1 награда]


Цитата:
marikcool писал:
можно ли без последствий писать в один удп сокет данные с разных потоков?
Заведи индикатор занятости сокета, устанавливай его потоками и не пиши, если занято. Но ваще сокеты на vcl - не труъ. vcl вообще не труъ, разве что гуй для dll нарисовать.

__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran

Сообщить модератору | IP: Записан
Сообщение: 87592

Старое сообщение 03-12-2011 12:35
- За что?
marikcool
Житель форума

Дата регистрации: Jul 2011
Проживает: kz
Сообщений: 1522
Возраст: 39

Рейтинг



Цитата:
Scrama писал:
Заведи индикатор занятости сокета, устанавливай его потоками и не пиши, если занято. Но ваще сокеты на vcl - не труъ. vcl вообще не труъ, разве что гуй для dll нарисовать.

сокеты у меня напрямую с winsock работают без оберток.
компоненты я только для gui использую.
просто читал инфу что sendto можно с разных потоков вызывать ничего не будет, убедиться бы.

Сообщить модератору | IP: Записан
Сообщение: 87596

Старое сообщение 03-12-2011 12:50
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 15:29. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > синхронизация vcl + потоки
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024