Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: 2 цикла в потоке сжирают память  [new]
defecator
Member

Откуда:
Сообщений: 36711
YuRock
alekcvp
пропущено...

Кстати, а чем вы так синхронайз не любите? Они же вроде, в последних версиях, их переделали?
Не знаю, что там сейчас, но тем, что до D7, пользоваться было нельзя по большому ряду причин. К счастью, в этом и нет никакой необходимости.
Стандартный набор граблей synchronize можно увидеть и самому, посмотрев реализацию, ну например:
1. Вызов synchronize навсегда зависнет, если его вызвать до Application.Run;
2. Навсегда зависнет, если вообще и не планировался вызов Application.Run (dll, консоль,...);
3. Навсегда зависнет, если работает еще один цикл обработки сообщений, запущенный при обработке сообщения в Application.Run;
4. Невозможность управления потоками, висящими на synchronize. Другие методы синхронизации дают такую возможность.

Первые три пункта далеко не всегда зависят от разработчика. Поэтому если кто-то наговнокодил с synchronize - другим приходится мучиться или переделывать.

какие страсти-то ))))
а ведь работало и работает
8 янв 18, 21:16    [21088242]     Ответить | Цитировать Сообщить модератору
 Re: 2 цикла в потоке сжирают память  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2615
YuRock
3. Навсегда зависнет, если работает еще один цикл обработки сообщений, запущенный при обработке сообщения в Application.Run;
*
Не через делфовый HandleMessage.
Либо через него, но из dll.
8 янв 18, 21:17    [21088244]     Ответить | Цитировать Сообщить модератору
 Re: 2 цикла в потоке сжирают память  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2615
defecator
какие страсти-то ))))
а ведь работало и работает
Угу. Достаточно часто.
8 янв 18, 21:18    [21088248]     Ответить | Цитировать Сообщить модератору
 Re: 2 цикла в потоке сжирают память  [new]
defecator
Member

Откуда:
Сообщений: 36711
YuRock
defecator
какие страсти-то ))))
а ведь работало и работает
Угу. Достаточно часто.

не буду спорить
у каждого свой опыт
8 янв 18, 21:23    [21088258]     Ответить | Цитировать Сообщить модератору
 Re: 2 цикла в потоке сжирают память  [new]
s62
Member

Откуда: Жуковский
Сообщений: 728
Есть же ещё асинхронный метод TThread.Queue. Сам его вроде не использовал, обычно посылаю сообщения, но кто-то в этом форуме (Дельфи) его несколько раз упоминал, я собственно так и узнал о его существовании.
8 янв 18, 22:18    [21088363]     Ответить | Цитировать Сообщить модератору
 Re: 2 цикла в потоке сжирают память  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1671
s62
Есть же ещё асинхронный метод TThread.Queue. Сам его вроде не использовал, обычно посылаю сообщения, но кто-то в этом форуме (Дельфи) его несколько раз упоминал, я собственно так и узнал о его существовании.
Я упоминал. Хорошая замена из коробки synchronize-ам и PostMessage-ам в 90% случаев. Используется в наших визуальных компонентах.
8 янв 18, 23:05    [21088440]     Ответить | Цитировать Сообщить модератору
 Re: 2 цикла в потоке сжирают память  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 2194
white_nigger,

из минусов - несинхронная. не всегда удобно.
9 янв 18, 00:37    [21088553]     Ответить | Цитировать Сообщить модератору
 Re: 2 цикла в потоке сжирают память  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57927
Любую несинхронную вещь можно сделать синхронной. Обратное сделать сложнее.

Posted via ActualForum NNTP Server 1.5

9 янв 18, 00:44    [21088557]     Ответить | Цитировать Сообщить модератору
 Re: 2 цикла в потоке сжирают память  [new]
krapotkin
Member

Откуда: Екатеринбург
Сообщений: 552
При выполнении в главном потоке насколько я понимаю, Queue выполняется сразу как обычный кусок кода.
А несинхронность это как раз и есть то, для чего это используется, не?
9 янв 18, 10:00    [21088897]     Ответить | Цитировать Сообщить модератору
 Re: 2 цикла в потоке сжирают память  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2615
s62
Есть же ещё асинхронный метод TThread.Queue

Не смотрел. Подозреваю, что это тот же Synchronize, только без ожидания выполнения. Т.е. те же грабли, только без зависания потоков при наступлении на них - просто код не выполнится никогда.
9 янв 18, 14:41    [21090156]     Ответить | Цитировать Сообщить модератору
 Re: 2 цикла в потоке сжирают память  [new]
alekcvp
Member

Откуда:
Сообщений: 606
YuRock
s62
Есть же ещё асинхронный метод TThread.Queue

Т.е. те же грабли, только без зависания потоков при наступлении на них - просто код не выполнится никогда.

Посмотрел код Synchronize в XE2 - вообще не понял, каким образом он может зависеть от Application.Run, в отличие от того же SendMessage...
9 янв 18, 15:02    [21090263]     Ответить | Цитировать Сообщить модератору
 Re: 2 цикла в потоке сжирают память  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 23331
alekcvp
YuRock
пропущено...

Т.е. те же грабли, только без зависания потоков при наступлении на них - просто код не выполнится никогда.

Посмотрел код Synchronize в XE2 - вообще не понял, каким образом он может зависеть от Application.Run, в отличие от того же SendMessage...

Плохо ведь смотрел... А в Forms.TApplication.Idle заглядывал? А в Classes.CheckSynchronize?
9 янв 18, 15:22    [21090368]     Ответить | Цитировать Сообщить модератору
 Re: 2 цикла в потоке сжирают память  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 2194
Гаджимурадов Рустам,

думаю, что PostMessage или Synchronize будет проще чем TThread.Queue + 'ручная' синхронизация. случаи, конечно, всякие бывают.
9 янв 18, 15:31    [21090421]     Ответить | Цитировать Сообщить модератору
 Re: 2 цикла в потоке сжирают память  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 2532
ИМХО, вообще корявые методы, и либо название неправильное дали или запихнули не туда

проектировщику оторвать бы руки, а может быть и ноги и местами поменять, что бы осознал что натворил ...
9 янв 18, 16:31    [21090734]     Ответить | Цитировать Сообщить модератору
 Re: 2 цикла в потоке сжирают память  [new]
оторванные руки
Guest
kealon(Ruslan)
проектировщику оторвать бы руки, а может быть и ноги и местами поменять, что бы осознал что натворил ...

имхо, в последнее время половина топиков в этой ветке заканчивается именно этими выводами. Неужели все так плохо?
9 янв 18, 18:16    [21091220]     Ответить | Цитировать Сообщить модератору
 Re: 2 цикла в потоке сжирают память  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2615
оторванные руки
kealon(Ruslan)
проектировщику оторвать бы руки, а может быть и ноги и местами поменять, что бы осознал что натворил ...

имхо, в последнее время половина топиков в этой ветке заканчивается именно этими выводами. Неужели все так плохо?

Ну так это вполне логично. Ведь Дельфи давно мёртв (с).
9 янв 18, 18:45    [21091281]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Delphi Ответить