Товарищи, решение не принято о добавлении компонентов на SVN ?
Этот топик читают: Гость
Ответов: 817
Рейтинг: 52
|
|||
карма: 1 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
-= DriveR =- писал(а): Товарищи, решение не принято о добавлении компонентов на SVN ?Но автор же еще в поисках Netspirit писал(а): Пока что обдумываю, каким он должен быть и каковы будут его преимущества по сравнению с обычнымВозможно, что еще и код будет редактироваться |
|||
карма: 22 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Да, есть ещё несколько исправлений. Над TCPServerEx работы пока не ведутся.
|
|||
карма: 26 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 7 раз(а), последний 2022-09-20 00:13:58 |
|||
карма: 0 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Позже. Сейчас там только немного изменен внутренний функционал класса потока и MainLoop в части возможностей синхронизации. Задел на будущее, если поток будет использоваться в других компонентах. На работу текущих компонентов никак не влияет.
А что, что-то не так с текущими компонентами? |
|||
карма: 26 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 7 раз(а), последний 2022-09-20 00:13:58 |
|||
карма: 0 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Выложил последнюю версию компонентов.
Если никаких замечаний по работе компонентов нет, можно выкладывать их на 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 |
| ||
Голосовали: | Konst |
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 7 раз(а), последний 2022-09-20 00:13:58 |
|||
карма: 0 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 7 раз(а), последний 2022-09-20 00:13:58 |
|||
карма: 0 |
|
Ответов: 4628
Рейтинг: 749
|
|||
А если вернуть старый hiThread?
|
|||
карма: 26 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
89.204.55.248, нужно скопировать файл NSTrhead.pas туда же, где лежит hiThread.pas. Взять его можно из первого поста.
|
|||
карма: 10 |
|
Ответов: 704
Рейтинг: 7
|
|||
Netspirit, пока сутки прошли без сбоев на схеме, которая раньше давала ошибки с потоками. Заменил пока только сами параллельные потоки, IC не внедрял. Может и без него все наладилось уже. Отчитаюсь попозже. А вот за идею, реализацию и вклад в такое веское и важное дело - огромная благодарность. Когда раньше схемы с потоками это была сплошная головная боль и бесконечные ошибки, теперь можно реализовать вполне годное стабильное приложение. Особенно порадовала возможность синхронизации tcp - это настоящий прорыв в стабильности нарисованных программ! Раньше постоянно ломал голову связки приложений между собой, да еще если в каждом из них были неизбежно параллельные потоки.
|
|||
карма: 0 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Netspirit, че-то я никак не въеду -- а где, собственно, находится тело метода ThreadSyncRoutine
|
|||
карма: 22 |
|
Ответов: 4628
Рейтинг: 749
|
|||
А это не имеет значения . Главное, что поток его там ожидает увидеть для синхронизации, если не увидел - ну значит нет никакой синхронизации.
А вот реализация этого метода лежит в компоненте MainLoop. Собственно компонент MainLoop введен для того, чтобы ничего не менять в существующих проектах. Он предлагает цикл, ожидающий вызова от параллельных потоков (похож на главную очередь сообщений). Такой цикл можно реализовать прямо в теле проектов "Консольное приложение", "Сервис" и т.п. (например, в THIConsole.Start). Тогда MainLoop не понадобится. |
|||
карма: 26 |
|
Ответов: 704
Рейтинг: 7
|
|||
В общем ошибка выпала. Но проработала заметно дольше. Буду ставить IC на компонентах, которые выдают данные в поток. Тогда ошибки, надеюсь, полностью исчезнут.
|
|||
карма: 0 |
|