Вверх ↑
Этот топик читают: Гость
Ответов: 817
Рейтинг: 52
#16: 2014-01-17 09:49:16 ЛС | профиль | цитата
Товарищи, решение не принято о добавлении компонентов на SVN ?
карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#17: 2014-01-17 10:53:10 ЛС | профиль | цитата
-= DriveR =- писал(а):
Товарищи, решение не принято о добавлении компонентов на SVN ?

Но автор же еще в поисках
Netspirit писал(а):
Пока что обдумываю, каким он должен быть и каковы будут его преимущества по сравнению с обычным

Возможно, что еще и код будет редактироваться
карма: 22

0
Ответов: 4612
Рейтинг: 746
#18: 2014-01-17 11:55:38 ЛС | профиль | цитата
Да, есть ещё несколько исправлений. Над TCPServerEx работы пока не ведутся.
карма: 26

0
Гость
Ответов: 17029
Рейтинг: 0
#19: 2014-01-17 15:05:36 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2022-09-20 00:13:58
карма: 0

0
Ответов: 4612
Рейтинг: 746
#20: 2014-01-17 15:26:08 ЛС | профиль | цитата
Позже. Сейчас там только немного изменен внутренний функционал класса потока и MainLoop в части возможностей синхронизации. Задел на будущее, если поток будет использоваться в других компонентах. На работу текущих компонентов никак не влияет.

А что, что-то не так с текущими компонентами?
карма: 26

0
Гость
Ответов: 17029
Рейтинг: 0
#21: 2014-01-17 16:17:10 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2022-09-20 00:13:58
карма: 0

0
Ответов: 4612
Рейтинг: 746
#22: 2014-01-21 13:27:38 ЛС | профиль | цитата
Выложил последнюю версию компонентов.

Если никаких замечаний по работе компонентов нет, можно выкладывать их на SVN. Можно также добавить и примеры в ExampleInternetTCP client-server ALT.

Поскольку был написан свой класс потока, предлагаю потестировать две полезные возможности.

1) В этой схеме применен IC, который демонстрирует возможность вызова события в главном потоке из параллельного потока. По функционалу аналогично событию Thread.onSyncExec, но преимущество в том, что на один компонент Thread и событие onExec можно повесить сколько угодно таких компонентов, для вызова различных событий. Чтобы провернуть это в теперешнем Thread на onSyncExec нужно будет повесить что-то типа IndexToChannel и устанавливать индекс требуемого события; кроме того, onSyncExec происходит только после onExec, тогда как новый вариант позволяет вызывать синхронизированное событие в процессе onExec.
Ещё указанный IC знает про компонент MainLoop, что позволяет использовать синхронизацию даже штатного Thread в неоконных приложениях.

2) Раз существует новый класс потока, я переделал штатный Thread на его использование. Теоретически, существует вероятность, что схемы, выдающие ошибки при использовании параллельных потоков, могут заработать с новым Thread. Кто хочет, замените у себя файлы из этого архива и попробуйте.

Редактировалось 3 раз(а), последний 2017-03-22 12:30:39
карма: 26

1
Голосовали:Konst
Гость
Ответов: 17029
Рейтинг: 0
#23: 2014-01-21 23:12:05 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2022-09-20 00:13:58
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#24: 2014-01-21 23:14:37 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2022-09-20 00:13:58
карма: 0

0
Ответов: 4612
Рейтинг: 746
#25: 2014-01-22 12:01:33 ЛС | профиль | цитата
А если вернуть старый hiThread?
карма: 26

0
Разработчик
Ответов: 4697
Рейтинг: 426
#26: 2014-01-22 16:05:03 ЛС | профиль | цитата
89.204.55.248, нужно скопировать файл NSTrhead.pas туда же, где лежит hiThread.pas. Взять его можно из первого поста.
карма: 10
0
Ответов: 704
Рейтинг: 7
#27: 2014-01-24 15:47:46 ЛС | профиль | цитата
Netspirit, пока сутки прошли без сбоев на схеме, которая раньше давала ошибки с потоками. Заменил пока только сами параллельные потоки, IC не внедрял. Может и без него все наладилось уже. Отчитаюсь попозже. А вот за идею, реализацию и вклад в такое веское и важное дело - огромная благодарность. Когда раньше схемы с потоками это была сплошная головная боль и бесконечные ошибки, теперь можно реализовать вполне годное стабильное приложение. Особенно порадовала возможность синхронизации tcp - это настоящий прорыв в стабильности нарисованных программ! Раньше постоянно ломал голову связки приложений между собой, да еще если в каждом из них были неизбежно параллельные потоки.
карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#28: 2014-01-24 16:18:11 ЛС | профиль | цитата
Netspirit, че-то я никак не въеду -- а где, собственно, находится тело метода ThreadSyncRoutine
карма: 22

0
Ответов: 4612
Рейтинг: 746
#29: 2014-01-24 17:24:10 ЛС | профиль | цитата
А это не имеет значения . Главное, что поток его там ожидает увидеть для синхронизации, если не увидел - ну значит нет никакой синхронизации.
А вот реализация этого метода лежит в компоненте MainLoop. Собственно компонент MainLoop введен для того, чтобы ничего не менять в существующих проектах. Он предлагает цикл, ожидающий вызова от параллельных потоков (похож на главную очередь сообщений).
Такой цикл можно реализовать прямо в теле проектов "Консольное приложение", "Сервис" и т.п. (например, в THIConsole.Start). Тогда MainLoop не понадобится.
карма: 26

0
Ответов: 704
Рейтинг: 7
#30: 2014-01-24 21:33:43 ЛС | профиль | цитата
В общем ошибка выпала. Но проработала заметно дольше. Буду ставить IC на компонентах, которые выдают данные в поток. Тогда ошибки, надеюсь, полностью исчезнут.
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)