Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Совет по использованию критических секций. [D7, XP]


Страницы:   1 2

Alex_C ©   (2011-06-04 16:21:00) 

Есть очень большая и глобальная программа. В этой программе есть много (эдак около 10) отдельных тредов пполучения данных из инета, телнета, данных с оборудования. Естественно получение и обработку полученных данных нужно согласовать.
Я не являюсь проф. программистом, и все данные я читаю в книжках и в инете. Большое спасибо СереюМ - здешнему пользователю , который эпизодически наставляет меня на путь истинный :)
Теперь к делу: согласование получения и обработки данных я использую критические секции.
Вотпросы на которые я не смог найти ответов в литературе:
1. Для каждого независимого потока нормально что я использую отдельную критическую секцию, если с другими потоками он не завязан?
2. Можно ли в основном потоке использовать критические секции? Или только метод Synchronize из потоков?
3. Мне в потоке нужно подождать некоторого действия. Application.ProcessMessage использовать нельзя. Что лучше?


Ega23   (2011-06-04 16:33:00) [21]

Крит.секция нужна для защиты целостности. Допустим, один поток читает массив, а второй его в этот момент изменяет. Нехорошо.
Если только чтение - то можно и без крит.секций. Если с изменением, то тогда нужно.
И ещё момент: крит.секция не принадлежит контексту какого-либо потока, она отдельно, сама по себе существует.


_Юрий   (2011-06-04 16:29:00) [22]


> 1. Для каждого независимого потока нормально что я использую
> отдельную критическую секцию, если с другими потоками он
> не завязан?


Если поток "не завязан с другими", крит секции не нужны.


> 2. Можно ли в основном потоке использовать критические секции?
>  Или только метод Synchronize из потоков?

Критические секции всегда используются разными потоками.  Если секцию использует только один поток, в ней нет никакого смысла. Является ли поток главным или нет - с т. зр. крит секции неважно.


> 3. Мне в потоке нужно подождать некоторого действия. Application.
> ProcessMessage использовать нельзя. Что лучше?


WaitForSingleObject
или же организовать очередь сообщений, и ждать сообщеня  в стандартном цикле обработки
while GetMessage(...) ...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо