Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Про потоки. / 20 сообщений из 20, страница 1 из 1
29.09.2017, 13:36:22
    #39528321
alvltss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
Господа, кто может подсказать ?
Изучаю мнопоточность. Вынес в отдельный поток работу с базами ACCESS через ADO. Почему то все равно наблюдается периодическая «заморозка» главной формы.
С визуальными компонентами поток напрямую не взаимодействует.
В чем может быть проблема? В ADO ? Существуют ли какие- нибудь особые требования к описанию и использованию процедур и функций, которые используют отдельные потоки ?
...
Рейтинг: 0 / 0
29.09.2017, 13:39:33
    #39528326
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
alvltss,

нет никаких особых требований. Пиши код как душе угодно, никаких заморозок не будет.
А если заморозки, то переписывай.
...
Рейтинг: 0 / 0
29.09.2017, 14:01:23
    #39528353
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
alvltssПочему то все равно наблюдается периодическая «заморозка» главной формы.
Synchronize?
...
Рейтинг: 0 / 0
29.09.2017, 15:11:15
    #39528421
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
alvltssПочему то все равно наблюдается периодическая «заморозка» главной формы

подозреваю, проблема в логике программы.
...
Рейтинг: 0 / 0
30.09.2017, 03:05:25
    #39528717
Makar4ik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
YuRockalvltssПочему то все равно наблюдается периодическая «заморозка» главной формы

подозреваю, проблема в логике программы.а ADO через VCL?
А ничего, что VCL сама по себе - не многопоточная, а зависимая от сообщений?
там ADO КОМПОНЕНТ (ВНИМАНИЕ!!!!) лежит на форме, которая принимает сообщения от одного потока, и отрабатывает в главном потоке программы.
...
Рейтинг: 0 / 0
30.09.2017, 03:06:45
    #39528718
Makar4ik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
попробуй написать свой компонент для ADO, который обойдёт потоки.
А лучше - свою либу для конкретной БД
...
Рейтинг: 0 / 0
30.09.2017, 03:32:41
    #39528722
Makar4ik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
...если надо изучать многопоточность, то из этой преременной надо VCL исключить.
Все модули с протоками свои - НЕ ДОЛЖНЫ юзать что-то, наследуемое от TComponent
TList, TStrings - легко (второе - не советую, ну да пофиг)
но компоненты - нет. Они завязаны на окна, а они в многопотоке нормально пахать не будут.
...
Рейтинг: 0 / 0
30.09.2017, 03:53:58
    #39528723
Makar4ik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
Makar4ik...если надо изучать многопоточность, то из этой преременной надо VCL исключить.
Все модули с протоками свои - НЕ ДОЛЖНЫ юзать что-то, наследуемое от TComponent
TList, TStrings - легко (второе - не советую, ну да пофиг)
но компоненты - нет. Они завязаны на окна, а они в многопотоке нормально пахать не будут.
Короче, дельфя управляет ОДНИМ своим потоком.
Application.ProcessMessages - это пример обращения к нему.

Мы в дельфе по умолчанию работаем в одном потоке.
Который VCL.

...как сделать иначе:
как попроще:
1. Через TThread что-то посчитать, выдать наружу через synhronize
...как получше:
2. Свой TMyThread нарисовать, не наследуя, от TThread, там считать, выдавать наружу либо через синхронизацию, либо через глобальные переменные (через critical section)
После 5-й дельфи TThread уж очень тяжёл в синхронизации, поэтому у его своего облегчённого аналога TMyThread, который тупо PostMessage фигачит, есть все бонусы по производительности.
...
Рейтинг: 0 / 0
30.09.2017, 03:59:19
    #39528724
Makar4ik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
SendMessage, не Post.
Ошибся
...
Рейтинг: 0 / 0
30.09.2017, 07:39:29
    #39528742
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
Makar4ik...если надо изучать многопоточность, то из этой преременной надо VCL исключить.
Все модули с протоками свои - НЕ ДОЛЖНЫ юзать что-то, наследуемое от TComponent
TList, TStrings - легко (второе - не советую, ну да пофиг)
но компоненты - нет. Они завязаны на окна, а они в многопотоке нормально пахать не будут.
Ой, всё...

Даже не буду спрашивать источник этого бреда.
...
Рейтинг: 0 / 0
30.09.2017, 11:03:48
    #39528767
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
Makar4ikтам ADO КОМПОНЕНТ (ВНИМАНИЕ!!!!) лежит на форме
Ты сделал такой вывод из

alvltssС визуальными компонентами поток напрямую не взаимодействует.
? Глубокомысленно...
...
Рейтинг: 0 / 0
30.09.2017, 11:05:49
    #39528768
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
wadmanОй, всё...Не любишь из переменной VCL исключать?))
...
Рейтинг: 0 / 0
30.09.2017, 11:08:16
    #39528769
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
Makar4ikСвой TMyThread нарисовать, не наследуя, от TThread, там считать, выдавать наружу либо через синхронизацию, либо через глобальные переменные (через critical section)
После 5-й дельфи TThread уж очень тяжёл
Вот это - самая круть. Настроение с утра поднято.
...
Рейтинг: 0 / 0
30.09.2017, 12:21:01
    #39528783
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
"Компьютер это конечный автомат. Треды для тех людей, которые не умеют программировать конечные автоматы." (Алан Кокс)
...
Рейтинг: 0 / 0
30.09.2017, 20:43:16
    #39528897
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
А мне вот это место больше всего нравится:
Makar4ik...
Короче, дельфя управляет ОДНИМ своим потоком.
Application.ProcessMessages - это пример обращения к нему.

Мы в дельфе по умолчанию работаем в одном потоке.
Который VCL.
...
...
...а хорошо, если бы наши супероптимизаторы начали писать многонитевые приложения.
...
Рейтинг: 0 / 0
01.10.2017, 08:43:56
    #39528936
alvltss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
1. Поток более - менее нормально вынесен. Во всяком случае, если в него вставить тупой бесконечный цикл, то форма не замораживается.
2. На другом компе заморозки практически не замечаются. Сильно заметно было на ноуте.
3. Заморозка почему-то сильно наблюдается при выполнении WNetAddConnection2.
...
Рейтинг: 0 / 0
01.10.2017, 10:09:38
    #39528943
alvltss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
На ноуте может тормозить заметнее, поскольку запросы идут к удаленной базе через точку доступа на телефоне через сотового оператора. Надо будет уточнить это момент.
...
Рейтинг: 0 / 0
01.10.2017, 11:08:45
    #39528957
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
alvltssНа другом компе заморозки практически не замечаются. Сильно заметно было на ноутеПонятно, ноут же холоднее - там процессор специальный. Зимний.

Пока код не покажешь, даже не смешно уже что-то обсуждать.
...
Рейтинг: 0 / 0
01.10.2017, 12:02:38
    #39528970
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
Makar4ik...если надо изучать многопоточность, то из этой преременной надо VCL исключить.
Все модули с протоками свои - НЕ ДОЛЖНЫ юзать что-то, наследуемое от TComponent
TList, TStrings - легко (второе - не советую, ну да пофиг)
но компоненты - нет. Они завязаны на окна, а они в многопотоке нормально пахать не будут.

Это почему же компоненты завязаны на окна ? Это почему же окна не будут работать в многопоточном приложении ?
...
Рейтинг: 0 / 0
02.10.2017, 10:31:18
    #39529238
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про потоки.
alvltss,

здесь читал?
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Про потоки. / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]