Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2011, 11:47   #21
carno
Пользователь
 
Аватар для carno
 
Регистрация: 15.04.2009
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Johnson Посмотреть сообщение
Код:
MyThread.Terminate;
Созданные объекты потоком остануться в памяти
carno вне форума Ответить с цитированием
Старый 01.11.2011, 11:49   #22
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Какие функции? Как добавляются?.. Расскажите более подробно о том, что вам нужно... Рассчеты РАЗНЫХ формул? Используйте РАЗНЫЕ классы потоков для этого...

Кстати, а насчет таймеров и потоков - в принципе таймер можно обьявить даже частью потока, и синхронизировать не придется... Хотя надо экспериментировать... Может и эвент таймера не отработает... Но потоки для вычисления - это однозначно.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 01.11.2011, 11:50   #23
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Цитата:
Созданные объекты потоком остануться в памяти
чО?.. FreeOnTerminate у потока не кошерно щас? При убиении потока он удалит все обьекты и освободит память...

У меня текущий проект сейчас занимает 70 потоков... ВСЕ они делают разные вещи. Один из них создается в памяти другого процесса. Не нужно мне утверждать что может поток, а чего нет. И как он себя поведет при удалении...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 01.11.2011 в 11:54.
Johnson вне форума Ответить с цитированием
Старый 01.11.2011, 11:53   #24
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Смысл в синхронизации, если поток зависнет на выполнении функции, он до синхронизации не доедет ? А даже если из вне потока увидеть, что поток долго не отвечает, его нужно убить, жестко, но тогда, все объеты, которые в нем, остануться в памяти.
это смотря как вы напишете класс потока.
можно сделать так что он в конструкторе создаст нужные объекты, а в деструкторе освободит.(объекты будут полями класса)

кстати, Thread.Terminate помоему же лишь ставит состояние Terminated в true.
Цитата:
FreeOnTerminate у потока не кошерно щас? При убиении потока он удалит все обьекты и освободит память...
если поток не организов корректно, то останутся висеть, ибо то что создано в Execute методе, не удалено.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.11.2011, 11:56   #25
carno
Пользователь
 
Аватар для carno
 
Регистрация: 15.04.2009
Сообщений: 16
По умолчанию

Есть сервер на сокетах, он обрабатывает запросы пользователей по установленным коммандам,
Код:
//Тут у нас типа сервер
var request // 'getinfo=1' - допустим пользователь послал команду, не суть какую

...
Answer := FormAnswer(request); // Формирование ответа
send(socket,Anser); // Отсылаем запрос 
...
FormAnswer подгружается из библиотеки, которая постоянно обновляется, в нее добавлют все новые и новые ответы на запросы пользователей, там и работа с базой данных, и с интернетом, и файловой системой, доменом, почтой и черт знает чем еще в будущем

Если мы запихиваем функцию FormAnswer в поток, спокойно ждем n-минут, не выполнилось, вызываем терминейт, все нормально, работа функции остановилась, но все объекты, как я уже говорил, на созданные какой то подфункцией, остануться в памяти
carno вне форума Ответить с цитированием
Старый 01.11.2011, 11:56   #26
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Цитата:
кстати, Thread.Terminate помоему же лишь ставит состояние Terminated в true.
Если не указано обратного (Thread.FreeOnTerminate, то поток уходит в саспенд и помечается завершенным (опять же, если не запрещено кеширование потоков.)
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 01.11.2011, 11:58   #27
carno
Пользователь
 
Аватар для carno
 
Регистрация: 15.04.2009
Сообщений: 16
По умолчанию

Цитата:
это смотря как вы напишете класс кстати, Thread.Terminate помоему же лишь ставит состояние Terminated в true.
Можно поток создать через CreateThread и убить его через TerminateThread, тогда он умрет жестко
carno вне форума Ответить с цитированием
Старый 01.11.2011, 11:59   #28
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
FormAnswer подгружается из библиотеки, которая постоянно обновляется, в нее добавлют все новые и новые ответы на запросы пользователей, там и работа с базой данных, и с интернетом, и файловой системой, доменом, почтой и черт знает чем еще в будущем
переорганизовывайте структуру, обьекты в таком случае надо как то привязывать к потоку, чтоб можно было их удалить.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.11.2011, 12:02   #29
carno
Пользователь
 
Аватар для carno
 
Регистрация: 15.04.2009
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
переорганизовывайте структуру, обьекты в таком случае надо как то привязывать к потоку, чтоб можно было их удалить.
Внутри функции FormAnswer, десятки подфункций, всех их в главный поток не запихнуть, и зависон может произойти и при нормальных условиях, нужно 100% уверенность в том, что память не засорится а слжба продолжит работать
carno вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прерывание Ирида Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 27.10.2011 04:36
Прерывание VKorablev Паскаль, Turbo Pascal, PascalABC.NET 5 15.04.2011 21:12
6 прерывание ленусик Фриланс 1 03.06.2008 16:22
6 прерывание ленусик Помощь студентам 5 30.05.2008 16:57