![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
_Rin |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 12.9.2006 Репутация: нет Всего: нет |
Пишу TCP сервер и клиент(на Indy).
На сервере создаю поток для обработки сообщений от клиента. Поток работает с ThreadList-ом (делает LockList и UnlockList). Как правильно уничтожить поток, чтобы быть уверенным, что поток сделает ThreadList.UnlockList, до того как сам "умрет". Execute потока (CommandList: TThreadList)
|
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
простите, но LOL p.s. а в чем собственно вопрос? поток "умрет" тогда, когда ему выставят terminated... память освободиться в случае, если FreeOnTerimate = true Это сообщение отредактировал(а) MetalFan - 25.6.2007, 12:41 -------------------- There are always someone smarter than you... |
|||
|
||||
_Rin |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 12.9.2006 Репутация: нет Всего: нет |
хм...а подробнее....что не так?
Добавлено через 1 минуту и 38 секунд Проблема в том, что CommandList после "уничтожения" потока не разлочивается.... Добавлено через 6 минут и 6 секунд Потоку выставляется terminated, FreeOnTerimate стоит в true, этот поток завершается, но из основного потока программы не получается обратиться к CommandList. ![]() |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
а что если Remove(Command) заменить на Delete(0) ? -------------------- There are always someone smarter than you... |
|||
|
||||
_Rin |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 12.9.2006 Репутация: нет Всего: нет |
Возник такой вопрос....
Есть 2 потока, работают с одним ThreadList-ом. 1) Первый поток сделал LockList и начал работать с элементами списка 2) Одновременно с этим второй поток делает ThreadList.Add (без LockList) 3) Что произойдет со списком в первом потоке (он увидит новый добавленный элемент, или нет)...??? Аналогично, что будет, если второй поток сделает ThreadList.Remove (без LockList) ??? |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
_Rin, посмотри в classes реализацию этих методов и все сам поймешь.
hint: методы procedure Add(Item: Pointer); procedure Clear; procedure Remove(Item: Pointer); внутри себя вызывают Lock/Unlock List -------------------- There are always someone smarter than you... |
|||
|
||||
_Rin |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 12.9.2006 Репутация: нет Всего: нет |
Спасибо...теперь вроде разобралась
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |