|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
DmSer о чём речь? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 14:37 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
DmSerБлагодаря async / await обмен по сети, обмен с устройством, запросы к БД, работа с файлами перебираются в главный поток и не парят программисту мозги многопоточностью. GetCurrentThreadId это подтверждает? Технически не существует способа "перебраться в главный поток" бесконечному циклу или ожиданию прихода ответа от сервера без того чтобы этот главный поток не поставить колом. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 14:43 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov GetCurrentThreadId это подтверждает? Технически не существует способа "перебраться в главный поток" бесконечному циклу или ожиданию прихода ответа от сервера без того чтобы этот главный поток не поставить колом. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 14:48 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
kealon(Ruslan)раньше её кооперативная многозадачность называли Ну да, ну да. "Как бесконечным циклом не повесить всю систему? - Не пишите бесконечных циклов!" Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 14:50 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov DmSerБлагодаря async / await обмен по сети, обмен с устройством, запросы к БД, работа с файлами перебираются в главный поток и не парят программисту мозги многопоточностью. GetCurrentThreadId это подтверждает? Технически не существует способа "перебраться в главный поток" бесконечному циклу или ожиданию прихода ответа от сервера без того чтобы этот главный поток не поставить колом. если бесконечный цикл не занимается майнингом, то возникают моменты, когда можно всунуть вызов await XXX, который запустит начало асинхронной операции, далее прервёт работу этого цикла и отыщет, чем бы ещё полезным можно было бы заняться основному потоку. Естественно, Sleep и WaitFor в таких циклах недопустимы! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 14:53 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov - Не пишите бесконечных циклов!" ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 14:55 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
DmSerЕстественно, Sleep и WaitFor в таких циклах недопустимы! Угу, так же как TQuery.Open или epoll_wait. И в чём смысл тогда?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 15:02 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
kealon(Ruslan) DmSer о чём речь? Для каждой функции, в которой есть вызов await, автоматически создаётся класс, в котором хранится состояние выполняемой операции. Это затратно по сравнению с классической машиной состояний. Но гораздо эффективнее по сравнению с многопоточным подходом. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 15:02 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov DmSerЕстественно, Sleep и WaitFor в таких циклах недопустимы! Угу, так же как TQuery.Open или epoll_wait. И в чём смысл тогда?.. [/quot] Смысл в том, что когда вводят поддержку async/await, то для всего предлагают асинхронные аналоги, например, TQuery.OpenAsync, epoll_waitAsync. Иначе смысла нет никакого. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 15:04 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
DmSerдля всего предлагают асинхронные аналоги Не для всего оно бывает в природе. Лисковый I/O - да, сетевой - только под Windows да и то весьма ограниченно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 15:10 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov DmSerдля всего предлагают асинхронные аналоги Не для всего оно бывает в природе. Лисковый I/O - да, сетевой - только под Windows да и то весьма ограниченно. Сетевой обмен где угодно уже давно есть в асинхронном варианте. .NET, Kotlin, Rust, Go, Python, NodeJS этом активно пользуются, и далеко не только в винде. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 15:18 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
Иллюзия, жалкая иллюзия. Бесконечный цикл опроса текущего состояния с ProcessMessagesasync внутри. Прогрев атмосферы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 15:24 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Иллюзия, жалкая иллюзия. Бесконечный цикл опроса текущего состояния с ProcessMessagesasync внутри. Прогрев атмосферы. Я не надеюсь, что в Дельфи это когда-либо появится. Скорее всего никогда не появится. Можно не переживать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 15:26 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov DmSerБлагодаря async / await обмен по сети, обмен с устройством, запросы к БД, работа с файлами перебираются в главный поток и не парят программисту мозги многопоточностью. GetCurrentThreadId это подтверждает? Технически не существует способа "перебраться в главный поток" бесконечному циклу или ожиданию прихода ответа от сервера без того чтобы этот главный поток не поставить колом.Async с Callback функцией. Во всяких процессорах типа Arduino этому соответствует работа по прерываниям. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 15:36 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
DmSerЯ не надеюсь, что в Дельфи это когда-либо появится. О чём ты? В Delphi функция async называется ProcessMessages и есть от рождения. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 15:40 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
DmSer Dimitry Sibiryakov Иллюзия, жалкая иллюзия. Бесконечный цикл опроса текущего состояния с ProcessMessagesasync внутри. Прогрев атмосферы. Я не надеюсь, что в Дельфи это когда-либо появится. Скорее всего никогда не появится. Можно не переживать. https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_the_Asynchronous_Programming_Library ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 15:40 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
s62 DmSer пропущено... Я не надеюсь, что в Дельфи это когда-либо появится. Скорее всего никогда не появится. Можно не переживать. https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_the_Asynchronous_Programming_Library Не сопоставимо с теми преимуществами, которые даёт async/await в других языках. Тут пул потоков с его ограничениями, а там все в одном потоке. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 16:04 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov DmSerЯ не надеюсь, что в Дельфи это когда-либо появится. О чём ты? В Delphi функция async называется ProcessMessages и есть от рождения. Вот-вот! Одна Async-функция в Delphi уже есть. Осталось ещё миллион завезти для полноценности :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 16:09 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
DmSerОсталось ещё миллион завезти для полноценности :) Нет, осталось её вызов напихать в каждую сторую строку каждой первой функции. Хотя постой-ка, местные хомячки именно так и делают. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 16:21 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov DmSerОсталось ещё миллион завезти для полноценности :) Нет, осталось её вызов напихать в каждую сторую строку каждой первой функции. Хотя постой-ка, местные хомячки именно так и делают. Нет, выборка из очереди ожидающих асинхронных вызовов должна выполняться в методе TApplication.Run (и TForm.ShowModal). Аналогично механизму TThread.Synchronize или TThread.Queue. Собственно, примерно так и сделано в .NET, JS (и Python скорее всего). В Go и Kotlin кардинально другой механизм. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 16:46 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
DmSerНет, выборка из очереди ожидающих асинхронных вызовов должна выполняться в методе TApplication.Run (и TForm.ShowModal). Код ProcessMessages отличается от кода ShowModal только отсуствием показа окна. Так почему "нет"-то?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 17:29 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov DmSerНет, выборка из очереди ожидающих асинхронных вызовов должна выполняться в методе TApplication.Run (и TForm.ShowModal). Код ProcessMessages отличается от кода ShowModal только отсуствием показа окна. Так почему "нет"-то?.. ProcessMessage это лишь вершина айсберга. И оно итак вызывается при необходимости. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 18:07 |
|
Почему поток не хочет уничтожаться, постоянно крутиться в процедуре TThread.WaitFor
|
|||
---|---|---|---|
#18+
DmSer kealon(Ruslan) пропущено... об организации взаимодействия с внешним миром, слишком затратно по объёму рутинного кода выходит. Для каждой функции, в которой есть вызов await, автоматически создаётся класс, в котором хранится состояние выполняемой операции. Это затратно по сравнению с классической машиной состояний. Но гораздо эффективнее по сравнению с многопоточным подходом. В общем случае, никто не мешает использовать стек для хранения состояния, загнав его в Fiber. Для дельфи обёртка пишется довольно легко, но создать коммуникационную библиотеку ко всему виндовому API будет довольно трудозатратно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 19:46 |
|
|
start [/forum/topic.php?fid=58&msg=40093840&tid=2037070]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 181ms |
0 / 0 |