![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TThread - и совместное использование данных [D6]
Michael Makushev © (2003-08-18 13:30:00)
Есть в программе класс производный от TThread. После запуска главной формы создается экземпляр и запускается в свободное плавание. Дальше есть список объектов (не важно каких) TObjectList.
Вопрос вот в чем: тред обращается к объекту из списка (получает на него указатель и вызывает его метод). И одновременно с этим с главной формы по кнопке может поступить комманда на уничтожение списка. Как будут вести себя тред, список и вызывающая уничтожение функция? (по моим данным что-то где-то вызывало подвисание). Какие способы избежать коллизий?
HolACost! (2003-08-18 19:44:00) [1]
Удалено модератором
Примечание: Offtopic
Verg (2003-08-18 17:17:00) [2]
TMultiReadExclusiveWriteSynchronizer появился давно. По-моему он еще и в 3-ке был. Но глуковат был по жизни. Его использование иногда (именно иногда, очень редко) приводило к явлениям "несовместимым с жизнью", например, dead lock (взаимное плокирование потоков). В D6 его основательно переработали и с этих пор , вроде бывсе в порядке.
Применение сего механизма оправдано только в очень некоторых случаях (имхо).
В вашем же случае достаточно тривиальной critical section.
Michael Makushev (2003-08-18 17:12:00) [3]
Спасибо, господа. Хотя как я понимаю TMultiReadExclusiveWriteSynchronizer повился в D6?
Или и в D5 он был?
Digitman (2003-08-18 16:47:00) [4]
> HolACost
TCriticalSection как раз и инкапсулирует функц-ть крит.секций, предоставляемых WinAPI
HolACost! (2003-08-18 16:33:00) [5]
Удалено модератором
Примечание: Offtopic
Verg (2003-08-18 15:19:00) [6]
> TMultiReadExclusiveWriteSynchronizer
Эт-то такая нетривиальная штука, что я ей до сих пор боюсь доверять, хотя говорят, что с Д6 типа все глюки отловили и поправили, но...
Digitman (2003-08-18 13:50:00) [7]
используй, к примеру, объект TCriticalSection для арбитража доступа к списку со стороны более чем одного кодового потока
Игорь Шевченко (2003-08-18 13:49:00) [8]
TMultiReadExclusiveWriteSynchronizer :)
Или набор критических секций для защиты списка от одновременного доступа.