169 похожих чатов

Я смотрю тут зашла дискуссия за потоки. Может кто подскажет

как понять какие компоненты «не потокобезопасны»? Вот например, я лет пять назад только узнал, что FDMemtable, TMemtableEh таковыми являются. Это можно как-то отличить с первого взгляда или просто знать?

15 ответов

16 просмотров
Денис- Автор вопроса

Отсюда второй вопрос: подскажите, как использовать Memtable.LoadFromDataset(……)в главном потоке, при этом, чтобы, например, ProgressBar не замерзал?

Все, кроме тех, у кого ЯВНО написано про потокобезопасность :)

Стикер

Денис
Отсюда второй вопрос: подскажите, как использовать...

Та никак. Почему TMemTableEh в потоке не безопасно? Юзаю без проблем

Никакие

Те, которым ты обеспечиваешь потокобезопасность сам. Или которые явно описанные, как предназначены для организации потоков. Искаропки например TThreadList, TThreadQueue... Со стороны например OmniThread Library

Денис- Автор вопроса
Дмитрий
Та никак. Почему TMemTableEh в потоке не безопасно...

Ну это сами разработчики отвечали мне на форуме, когда я столкнулся с тем, что на слабых машинах были вылеты except и грил был криво отрисован

А зачем создавать экземпляр внутри потока? Передаю в поток MemTableEh и в нём LoadFromDataSet - никаких проблем

Денис- Автор вопроса
Дмитрий
А зачем создавать экземпляр внутри потока? Передаю...

Никто в потоке ничего не создает. Лежит на форме и передается в поток

Дмитрий
А зачем создавать экземпляр внутри потока? Передаю...

задачи разные бывают же в общем случае TMemTableEh не потокобезопасен

Дмитрий
А зачем создавать экземпляр внутри потока? Передаю...

Это простой и достаточно надёжный способ, чтобы компонент все, что он использует, тоже создавал в этом другом потоке. А то мало ли что он использует... Не абсолютно надёжный, но стартовая точка плохая. А то можно взять TMemo и передать в отдельный поток её Lines. А чо таковая я же мемо не трогаю, я же совсем другой объект передал!

Денис
Никто в потоке ничего не создает. Лежит на форме и...

Визуальные компоненты реализованы через посылку в Windows сообщений, которое окно будет принимать и обрабатывать в том потоке, который её создал (обычно mainvclthread) Да, с невизуальными компонента и МОЖЕТ быть иначе, но потом ты туда воткнешь событие, событие начнёт дёргать форму, и понеслась душа по кочкам. Поэтому лучше считай, что небезопасно ВСЕ вообще. Потом запутаешься и потратишь в 100 раз больше, чем съэкономишь на неряшливости сегодня

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

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта