Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.03;
Скачать: CL | DM;

Вниз

Метод Synchronize - проблемы?   Найти похожие ветки 

 
VPV   (2002-07-27 17:21) [0]

Доброго времени суток! Суть проблемы: метод Synchronize используется для обеспечения защищенной модификации данных основного потока из других потоков приложения. Однако, пришлось столкнуться с ошибкой, причину которой не могу определить. В результате посытался использовать вызов некоторой процедуры (модифицирующей данные VCL компонента) без метода Synchronize. Начало работать нормально (вроде бы!?). Предполагается, что таких потоков (несколько экземпляров от родителя TThread) будет несколько. Предлагаю немного обсудить насколько хорошо мое решение, а также возможные причины проблемы с методом Synchronize. Анализ исходных текстов модуля с TThread проводил, вроде бы библиотечный алгоритм влиять на выполнение программы не должен. Заранее спасибо...


 
y-soft ©   (2002-07-27 20:33) [1]

Synchronize предназначен для синхронизации вызовов GUI.
Для защиты данных основного потока лучше использовать объекты синхронизации (критические секции, мьютексы и т.п.) или посылать сообщения окну приложения, используя PostMessage, т.к. TThread.Synchronize фактически посылает сообщения специальному окну (см. исходники TThread), но использует SendMessage, т.е. до завершения SendMessage:

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

А это не всегда хорошо



Страницы: 1 вся ветка

Текущий архив: 2002.10.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
3-7823
Serg2002
2002-09-12 10:30
2002.10.03
Супер сложный запрос :)


3-7819
vlad40
2002-09-11 09:37
2002.10.03
Проблемы обращения к базе Paradox из CGI. Помогите!!!!!!


1-7977
Akim2
2002-09-20 18:45
2002.10.03
Можно ли достучаться к Property класса по имени


3-7772
Lina
2002-09-11 13:35
2002.10.03
Не знаю как убрать ScrollBar из DBGrid ...


1-7984
Yr2
2002-09-13 19:02
2002.10.03
Как преобразовать простой шрифт в BitMap со спец. эффектами?