|
|
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Программа рассылки сообщений корпоративным пользователям компании должна рассылать сообщения только в определенное время, например, с 8 утра до 18 часов вечера. Так вот, такой код просто загружает проц на 15% Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. т.е. вместо Continue нужно поставить Код: pascal 1. XXX - это количество миллисекунд до 8 утра, когда настанет резрешенное время. или я все равно неправильно сделаю? Подскажите, как правильно усыпить поток и запустить из самого себя, так сказать? Ну и переписывать это всё не хочется. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 00:06 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 т.е. вместо Continue нужно поставить Код: pascal 1. XXX - это количество миллисекунд до 8 утра, когда настанет резрешенное время. X11 Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 00:12 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Почитай что такое WAIT_ABANDONED. Это точно не то, что тебе нужно неа, пока не понял.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 00:16 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ использовать WaitableTimer это оно? https://gist.github.com/perevoznyk/1f554a2bd4b7523701c6d9e26dc7a473 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 00:18 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 неа, пока не понял.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 00:20 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 это оно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 00:24 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ X11 это оно? В общем-то для этой задачи достаточно одного обычного эвента (который уже есть). Ждать по 60 секунд, после ожидания - проверять Terminated, если не выход - проверять насписание, если пора - отправлять почту, нет - Continue. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 00:36 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 _Vasilisk_ Почитай что такое WAIT_ABANDONED. Это точно не то, что тебе нужно неа, пока не понял.. А так - не важно, что он вернет - таймаут или сработку - на Terminated проверять всё равно надо и лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 00:39 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11, а чем тебя не устраивают паузы в стиле: Код: pascal 1. 2. Проц не грузит, служба не зависает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 00:49 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Sleep(1000) перед Continue да и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 01:09 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
asutp2Проц не грузит Ещё как грузит, просто ты за своими гигагерцами это не замечаешь. Посмотри в ProcessExplorer счётчики переключения контекстов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 01:25 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov asutp2Проц не грузит Ещё как грузит, просто ты за своими гигагерцами это не замечаешь. Посмотри в ProcessExplorer счётчики переключения контекстов. Когда диспетчер задач непрерывно показывает ЦП 0% у сервиса с подобной реализацией простоя, действительно сложно заметить :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 05:31 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 _Vasilisk_ использовать WaitableTimer это оно? https://gist.github.com/perevoznyk/1f554a2bd4b7523701c6d9e26dc7a473 такс... а тут используется Application.ProcessMessages; а для потоков это норм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 09:49 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ И liDueTime.QuadPart тебе удобнее будет использовать положительный. Так сразу можно установить время срабатывания Т.е. просто минус убрать? или еще что-то менять надо? И что значит "Так сразу можно установить время срабатывания"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 09:51 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 X11 такс... а тут используется Application.ProcessMessages; а для потоков это норм? это почти везде не норм, а для потоков это мрак и дичь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 09:53 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
т.е. ту функцию уже точно нельзя использовать. другие советы тоже под вопросом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 09:59 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 10:10 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
А виндовый планировщик не хочешь использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 10:18 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
мне бы что-то попроще потому что наворотить такой код, в котором я долго не смогу разобраться и понять, что там к чему, не очень хотелось бы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 10:31 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Можно так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 10:46 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 _Vasilisk_ использовать WaitableTimer это оно? https://gist.github.com/perevoznyk/1f554a2bd4b7523701c6d9e26dc7a473 когда задействовал эту функцию Wait() то madExcept по завершеню работы программы выдал просто ТУЧУ resource leaks ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 10:48 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 Так вот, такой код просто загружает проц на 15% Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Такой код грузит свое ядро на 100%. А то что винда показывает около 15 - так это потому что проц многоядерный. 15% примерно соответствует Intel Core i7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 11:02 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
ProcessExplorer Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 11:20 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Ох... Не грузит процессор, ожидает сообщения, минимум памяти, без обратной связи (но сделать просто). Можно сделать массив с 1000 потоками и раскидывать между ними сообщения. Расписание нужно организовывать в основном потоке, а эти - только для работы/отправки. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 11:21 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Мне не надо раскидывать между потоками сообщения (пока что). Нужно (пока что) приостановить поток, а потом продолжить его работу. Из самого себя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 11:23 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11, тебе дали 100% работающий код, а ты булькаешь не посмотрев его? Или тут сложные конструкции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 11:24 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
rgreat Sleep(1000) перед Continue да и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 11:52 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 такс... а тут используется Application.ProcessMessages; а для потоков это норм? X11 Т.е. просто минус убрать? или еще что-то менять надо? И что значит "Так сразу можно установить время срабатывания"? X11 когда задействовал эту функцию Wait() то madExcept по завершеню работы программы выдал просто ТУЧУ resource leaks ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 12:43 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
YuRock Смысла нет, если можно заменить на Wait(1000) и не ждать секунду при закрытии. я написал, что после Wait madExcept выдает кучу leaks ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 13:02 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 я написал, что после Wait madExcept выдает кучу leaks я так понял, что если завершить работу приложения во время Wait(), то не выполняется деструктор потока и куча объектов тоже не удаляется поэтому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 13:37 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
YuRock, Секунду перед закрытием можно и подождать. Ничего страшного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 13:46 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Подождать до утра? Цель Wait() ждать до назначенного времени, например, до 8ми утра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 13:48 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Получается, что внутрь Wait нужно куда-то втиснуть корректно деструктор Destroy? Когда я закрываю программу, то вот эта бряка не выполняется. Я имею ввиду, что при закрытии программы, всё что после Wait не выполняется. Т.е. нужно как-то заставить поток завершаться корректно, с выполнением деструктора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 14:02 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
wadman тебе дали 100% работающий код, а ты булькаешь не посмотрев его? Или тут сложные конструкции? Извини, к своему сожалению я там не нашел чего-то легко исправит мою проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 14:04 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11, а чем тебя не устроил предложенный мной вариант? Чуть измененный твой код. 22288865 Тикает раз в 5 сек, вне диапазона времени рассылки снова ждет, во время рассылки делает действие и после этого ждет. Чтобы не ожидая, закончить работу, "взводишь" событие из основного потока. Да, вариант не универсальный, а для конкретного случая, при других временных константах может быть будет не очень хорош, но при этих условиях решает задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 14:11 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 YuRock Смысла нет, если можно заменить на Wait(1000) и не ждать секунду при закрытии. я написал, что после Wait madExcept выдает кучу leaks Я не знаю, что такое madExcept. Так или иначе, утечки ресурсов происходят в одном единственном случае: если забывать их освобождать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 14:20 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 X11 я написал, что после Wait madExcept выдает кучу leaks я так понял, что если завершить работу приложения во время Wait(), то не выполняется деструктор потока и куча объектов тоже не удаляется поэтому. завершить работу приложения во время Wait невозможно. Разве что TerminateProcess или ExitProcess. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 14:22 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
rgreat YuRock, Секунду перед закрытием можно и подождать. Ничего страшного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 14:23 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
YuRock завершить работу приложения во время Wait невозможно. Разве что TerminateProcess или ExitProcess. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 14:24 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
rgreatИ зачем ты тогда предлагаешь wait? В надежде, что топикстартер не полный идиот и догадается ждать не просто время, а сигнал "завершись". Хотя мог бы уже понять... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 14:29 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
rgreat YuRock завершить работу приложения во время Wait невозможно. Разве что TerminateProcess или ExitProcess. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 14:33 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, я пытаюсь понять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 14:36 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
YuRock льзовании Wait (в отличие от Sleep) перед завершением приложения можно выйти из Wait. т.е. Until (lBusy = WAIT_OBJECT_0) or (lBusy <> ???); т.е. что правильно подставить вместо ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 14:44 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 YuRock льзовании Wait (в отличие от Sleep) перед завершением приложения можно выйти из Wait. т.е. Until (lBusy = WAIT_OBJECT_0) or (lBusy <> ???); т.е. что правильно подставить вместо ??? Ничего не подставить. Просто Wait и всё. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. А в деструкторе потока: Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 14:53 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Что-то я вообще запутался. Как я ранее писал, Destroy не выполняется. и зачем там Terminate и SetEvent? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 14:58 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 Как я ранее писал, Destroy не выполняется. X11 и зачем там Terminate и SetEvent? Terminate - чтобы свойство Terminated стало =True. SetEvent - чтобы прервался Wait. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 15:00 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
И чтобы потом вся это кривобайда упала на обращении к освобождённому объекту. Великолепно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 15:11 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
создание Код: pascal 1. 2. 3. 4. 5. 6. деструктор вызывается, если выполнить SendNotifyThread.Terminate; вот код при закрытии приложения: Код: pascal 1. 2. 3. 4. 5. 6. а вот если нужно принудительно остановить работу потока: Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 15:15 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov И чтобы потом вся это кривобайда упала на обращении к освобождённому объекту. Великолепно. Или ты о чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 15:16 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 Код: pascal 1. 1. У тебя в потоке вечный цикл. Какой нахрен FreeOnTerminate??? Убери это. Как и CreateSuspended=True - только лишняя строка Start из-за этого (ее тоже выкинь). Все создавай в конструкторе потока. 2. Весь свой код при завершении приложения выкинь, замени его на одну строку - SendNotifyThread.Free ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 15:20 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Спасибо, но ничего я выкидывать не буду, пока всё работает нормально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 15:22 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 а вот если нужно принудительно остановить работу потока: Код: pascal 1. 2. 3. 4. Замени это на FreeAndNil( SendNotifyThread ); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 15:22 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 Спасибо, но ничего я выкидывать не буду, пока всё работает нормально Зачем нам вопросы задавать, если лучше нас знаешь, как лучше. П.С. Работает хоть как-то - очень случайно, это не нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 15:24 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
YuRock Замени это на FreeAndNil( SendNotifyThread ); Ты ведь даже не знаешь, что делает StopSendNotify(), а требуешь это убрать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 15:28 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 YuRock Замени это на FreeAndNil( SendNotifyThread ); Ты ведь даже не знаешь, что делает StopSendNotify(), а требуешь это убрать Конечно же я знаю, что это такое. Протёр свой шар с утра. Если эта переменная не полностью бесполезна и не только дублирует Terminated, то перенеси ее в деструктор (возле Terminate;), да и всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 15:33 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
YuRockОсвобождение объекта (или хэндла) эвента - после inherited Destroy (после этого Execute уже гарантированно завершен). Да ну? Это ты гарантируешь вызовом Terminate и SetEvent в деструкторе ?.. Ню-ню... Раздел Рустама всегда полон людей, стреляющих себе в ногу, выходящих в окно и делающих прочие самоубийственные глупости в стиле мистера Бина. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 15:50 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov YuRockОсвобождение объекта (или хэндла) эвента - после inherited Destroy (после этого Execute уже гарантированно завершен). Да ну? Это ты гарантируешь вызовом Terminate и SetEvent в деструкторе ?.. Ню-ню... Раздел Рустама всегда полон людей, стреляющих себе в ногу, выходящих в окно и делающих прочие самоубийственные глупости в стиле мистера Бина. Я это гарантирую вызовом inherited Destroy, в котором вызывается WaitFor. Dimitry Sibiryakov Раздел Рустама всегда полон людей, стреляющих себе в ногу, выходящих в окно И любителей пукнуть в лужу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 15:53 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Эмм, из простейшей задачи раздули в непойми что))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 15:56 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
asutp2 Эмм, из простейшей задачи раздули в непойми что))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 15:57 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
asutp2 Эмм, из простейшей задачи раздули в непойми что))) я в шоке просто ну да ,я пока решил вопрос с помощью Код: pascal 1. 2. хоть это и некорректно может быть, но проц не грузит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 16:00 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 asutp2 Эмм, из простейшей задачи раздули в непойми что))) я в шоке просто ну да ,я пока решил вопрос с помощью Код: pascal 1. 2. хоть это и некорректно может быть, но проц не грузит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 16:13 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Это ты гарантируешь вызовом Terminate и SetEvent в деструкторе ?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 18:55 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_А в чем проблема? FreeOnTerminate. Деструктор вызывается уже после того, как Execute завершилось. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 19:03 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov FreeOnTerminate. Деструктор вызывается уже после того, как Execute завершилось. Главное, чтобы Event не закрыли по выходу из Execute ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 21:12 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
X11 asutp2 Эмм, из простейшей задачи раздули в непойми что))) я в шоке просто ну да ,я пока решил вопрос с помощью Код: pascal 1. 2. хоть это и некорректно может быть, но проц не грузит Рекомендую все-таки почитать статью по многопоточному программированию. Сколько ещё лет можно не разбираться с этой темой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2021, 23:38 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ кроме лишних телодвижений Так-то я давно наследника написал с созданием в конструкторе этого эвента и этими тремя (четырьмя, с освобождением эвента после inherited) строчками в деструкторе. И использую его если не всегда, то почти всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 00:27 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Читал только часть последней страницы - если извне объект потока "трогают", то никаких FreeOnTerminate. PS: если есть хоть малейшее недопонимание TThread ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 00:30 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Dmitry Arefiev, ну вроде бы нету, даже syncronize не использую за ненадобностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 09:51 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
YuRock Каких лишних? Terminate лишний, потому что он есть в Destroy? Так он нужен обязательно до SetEvent. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 14:11 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ YuRock Каких лишних? Terminate лишний, потому что он есть в Destroy? Так он нужен обязательно до SetEvent. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 15:23 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
asutp2Это флаг, который регулирует поведение при остановке потока. Прааавильно. А тепепь попробуй подумать когда и откуда будет вызываться деструктор потока если этот флаг установлен. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 15:32 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, а что думать? смотрим функцию ThreadProc в System.Classes.pas, там всё очевидно: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Соответственно FreeOnTerminate проверяется после завершения работы Thread.Execute, со всеми вытекающими. Другой вопрос, что если у потока флаг FreeOnTerminate установлен, то хранить ссылку на него и обращаться по ней чревато экспешенами, т.к. поток может завершится в произвольный момент и сохраненные ссылки на него станут невалидными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 16:00 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
О чём, собственно, тут и говорилось всю последнюю страницу. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 16:05 |
|
||
|
Как правильно заморозить поток из самого себя?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ YuRock Каких лишних? Terminate лишний, потому что он есть в Destroy? Так он нужен обязательно до SetEvent. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2021, 16:15 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2037553]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
96ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
112ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 492ms |

| 0 / 0 |
