Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.12.2016, 15:18
Аватар для ined
ined ined вне форума
Начинающий
 
Регистрация: 16.11.2008
Адрес: Российская Федерация!! :)
Сообщения: 165
Версия Delphi: Delphi 2010
Репутация: 1272
По умолчанию Разбор Потоков. Моё решение

Я тут задумался о многопоточности приложения, а стандартный метод мне как-то не понравился. И как обычно я полез в дебри....
В итоге получился вот такой модуль.
Что-же он может:
  • Создаёт поток. (Ставит его на паузу)
  • Запускает поток(Перезапускает).
  • Запускает поток циклично.
  • Останавливает цикличный поток.
  • Удаляет поток.
Внутри модуля:
WaitForSingleObject - Ловит поток.
ResetEvent - Останавливает поток.
SetEvent - Запускает поток.
-----------------------------------------------------------
Коментарии от Гуру приветствуются.
Может есть ошибки, а они скорей всего есть!
Вложения
Тип файла: zip MyThread.zip (1.2 Кбайт, 3 просмотров)
__________________
11011111 INED Home code
VK

Последний раз редактировалось ined, 13.12.2016 в 15:26.
Ответить с цитированием
  #2  
Старый 13.12.2016, 15:31
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Для чего это нужно? Для каких задач может быть пригодно?
Лично я, например, пользуюсь пулами, объекты-потоки, как таковые, не использую вообще, управление потоками соуществляю через стандартный монитор потоков.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 13.12.2016 в 15:36.
Ответить с цитированием
  #3  
Старый 13.12.2016, 15:43
Аватар для ined
ined ined вне форума
Начинающий
 
Регистрация: 16.11.2008
Адрес: Российская Федерация!! :)
Сообщения: 165
Версия Delphi: Delphi 2010
Репутация: 1272
По умолчанию

Данный модуль создан в познавательных целях. Так как о потоках в интернете маловато нормальной инфы.
Если есть конкретная критика по модулю или я где-то сделал ошибку в коде, пишите.
__________________
11011111 INED Home code
VK
Ответить с цитированием
  #4  
Старый 13.12.2016, 15:55
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Плохой у вас интернет значит.

Итак, критика:
1. при создании потока необходимо передавать указатель на процедуру и указатель на параметры — не очень удобно, удобнее было бы сделать замыкания.при создании потока необходимо передавать указатель на процедуру и указатель на параметры — не очень удобно, удобнее было бы сделать, как минимум, замыкания (2010 дельфи должна это уметь);
2. после создания потока на выходее имеем некий идентификатор, который банально можно потерять или он как-то изменится по ошибке, тоже не очень удобно, быыло бы удобнее это обернуть как минимум в некий класс (становится похоже на реализацию класса tthread, не так ли?);
3. если я работаю с критической секцией и мне необходимо приостановить поток до возникновения сигнала — как я это реализую приведенными тобой api (в частности, как мне помогут ф-ии PlayThread и StopThread)?
4. ф-я DestroyThread не дает понятия, что он делает, прерывает выполнение потока с завершением, или же высвободает хендл потока, и надо эту ф-ю использовать в try finally блоке?
5. в каком случае нужен StartСycleThread?
6. будет ли код компилироваться под х64 и другие платформы?
ну и 7-е: каким образом это может понять новичкам принципы работы с потоками и чем это лучше «отсутствующей» нормальной документации по потокам?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 13.12.2016, 16:21
Аватар для ined
ined ined вне форума
Начинающий
 
Регистрация: 16.11.2008
Адрес: Российская Федерация!! :)
Сообщения: 165
Версия Delphi: Delphi 2010
Репутация: 1272
По умолчанию

Ещё раз повторюсь. Модуль создан в познавательных целях.
Это означает что его удобство в использовании и возможность его как-то применить не обсуждаются.
У каждого подход к потокам разный. Кто-то пользуется классом tThread, а кто-то просто CreateThread.
Попытка показать, что вы негативно относитесь к данному "Велосипеду", вам удалась, но всё-же. Ближе к теме.
__________________
11011111 INED Home code
VK
Ответить с цитированием
  #6  
Старый 13.12.2016, 16:54
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Ну если ближе к теме, то ответ «плохо» устроит?
Перечень замечаний я выдал, ты отмазался на них отвечать, дальше чего обсуждать, если ты не можешь за свой код ответить? Потому см. строку 1.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 13.12.2016 в 16:56.
Ответить с цитированием
  #7  
Старый 13.12.2016, 18:52
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от ined
Кто-то пользуется классом tThread, а кто-то просто CreateThread.
Так-то в VCL BeginThread() рекомендуется.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:11.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter