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

Откуда:
Сообщений: 16
X-Cite, цикл приема и обработки сетевых сообщений - то, что я прислал выше, суть упрощенный вариант огромной и очень сложной программы.
25 мар 20, 20:28    [22105955]     Ответить | Цитировать Сообщить модератору
 Re: Зависает WaitForSingleObject  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1665
Вам надо понимать, что не весь TThread выполняется в отдельном потоке, а только его метод Execute.

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

Т.е. когда вы вызываете onDeleted, то он выполняется в контексте потока где был вызван...

Исключением является только Synchronize и Queue...
25 мар 20, 22:53    [22106002]     Ответить | Цитировать Сообщить модератору
 Re: Зависает WaitForSingleObject  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49515

VirtaOtec
упрощенный вариант огромной и очень сложной программы.

Читайте Рихтера, он рулез есть.

Posted via ActualForum NNTP Server 1.5

25 мар 20, 23:05    [22106006]     Ответить | Цитировать Сообщить модератору
 Re: Зависает WaitForSingleObject  [new]
VirtaOtec
Member

Откуда:
Сообщений: 16
X-Cite, спасибо, очень дельное замечание, примерно к такому выводу мы и пришли, и этого лишь не хватало для истинного понимания сущности потоков. Теперь многое, сокрытое ранее, приоткрывается.
26 мар 20, 07:26    [22106087]     Ответить | Цитировать Сообщить модератору
 Re: Зависает WaitForSingleObject  [new]
VirtaOtec
Member

Откуда:
Сообщений: 16
Я, будто, прозрел, друзья! Благодарю вас!
26 мар 20, 07:41    [22106093]     Ответить | Цитировать Сообщить модератору
 Re: Зависает WaitForSingleObject  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 26442
X-Cite
Вам надо понимать, что не весь TThread выполняется в отдельном потоке, а только его метод Execute.

Не всегда... Тут бывали товарищи, которые умудрялись запускать метод напрямую и делали соответствующие выводы о многопоточности.
26 мар 20, 08:03    [22106103]     Ответить | Цитировать Сообщить модератору
 Re: Зависает WaitForSingleObject  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1665
VirtaOtec,

В вашем случае, лучше будет в ваших наследниках от TThread не делать public и published полей, свойств и методов...
Тогда вы не запутаетесь, что в потоке, а что нет... Все что будет внутри TThread, будет в потоке, кроме конструктора, деструктора, и вспомогательных after/before
Если что-то надо куда-то передать.... Примитивы, переданные через конструктор, ивенты, потокобезопасные очереди, списки и т.п.
26 мар 20, 10:56    [22106176]     Ответить | Цитировать Сообщить модератору
 Re: Зависает WaitForSingleObject  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4115
wadman
X-Cite
Вам надо понимать, что не весь TThread выполняется в отдельном потоке, а только его метод Execute.

Не всегда... Тут бывали товарищи, которые умудрялись запускать метод напрямую и делали соответствующие выводы о многопоточности.
А чо, это еще не худший вариант.
Некоторые вообще в execute делают вызовы одного метода в synchronize, а это еще хуже. Мотивируют тем, что "все потоки всё равно работают синхронно, если не верите - вы ничего не понимаете".
26 мар 20, 18:29    [22106506]     Ответить | Цитировать Сообщить модератору
 Re: Зависает WaitForSingleObject  [new]
makhaon
Member

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

https://www.sql.ru/forum/359535/sleep-vnutri-potomka-tthread-tormozit-osnovnoy-potok

автор
Архангельский жил, жив и будет долго жить.
26 мар 20, 21:22    [22106584]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Delphi Ответить