|
|
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
makhaonЗакусывать надоКстати, "реактивное программирование" - интересный термин. Новый наверно, раньше не встречал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2018, 13:48 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
YuRockmakhaonЗакусывать надоКстати, "реактивное программирование" - интересный термин. Новый наверно, раньше не встречал. Это, наверное, как экстремальное программирование, когда мысль прет и хочется в туалет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2018, 13:52 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
stanilarА меня учили что в Дельфи для модульности используются Unit'ы. Простой пример Код: pascal 1. В идеале он сам должен подхватит ближайшую объявленную функцию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2018, 14:19 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
wadmanЭто, наверное, как экстремальное программирование, когда мысль прет А почему не: "А зачем это в дельфистам"? YuRockКстати, "реактивное программирование" - интересный термин. Новый наверно, раньше не встречал. Чуть постарше Дельфи. Наверное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2018, 19:57 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
МиксионисюниПростой пример Пример чего? Что для разделения нужны юниты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2018, 20:00 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
stanilarYuRockКстати, "реактивное программирование" - интересный термин. Новый наверно, раньше не встречал. Чуть постарше Дельфи. НаверноеПогуглил. Да, есть такое. Нет, не старше, но это не важно. Важно то, что в "реактивном программировании" речь идет о потоках данных. А в этом топике - о потоках кода. Это, как бы, разные сущности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2018, 20:10 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
YuRockА в этом топике - о потоках кода. Автору нужно получить событие о завершении работы расчетного потока. Как раз событие завершение работы расчетного потока и есть поток данных. По сути реактивность это те-же потоки. На практике можно было бы отказаться от того потока, в котором идет ожидание, заменив его на две процедуры: генерация события передачи данных в поток и событие получение результата расчета. Как раз удобно, когда слушателей много. Удобно именно с точки зрения оформления кода. Конечно, можно посмотреть есть ли что в OTL, но дельфя у меня уже давно не стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2018, 20:39 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
stanilar, Всё, что ты написал, делается элементарно и на делфи и на чем угодно. Тупо вызвать коллбэки (извини, "события") у подписанных "читателей". Только это ад несусветный. Да, иногда - удобно. Как в экселе - одна ячейка другие обновляет. Но в общем - нет. Автору нужно не это, не огород "событий" городить. Ему нужно просто организовать очередь и в других потоках дожидаться выполнения заданий, добавленных в эту очередь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2018, 20:53 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
YuRockделается элементарно ... В сферическом примере - да. На практике будут разные ситуации типа преждевременного завершения ожидающего потока. Или ожидания разными потоками получения одинаковых данных. YuRockогород Вот как раз колхозить огород тут предлагаешь именно ты. Мое предложение (будь такая возможность) - воспользоваться проработанной теорией (а если говорить про другие ЯП то и практикой). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2018, 21:12 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
stanilarYuRockделается элементарно ... В сферическом примере - да. На практике будут разные ситуации типа преждевременного завершения ожидающего потокаНу это если сделать "две функции", как предлагаешь ты. А если мониторить отписку читателей - проблемы такой не будет. Все, конечно, больше и больше усложняется. Именно это наверно и нужно автору - усложнить задачу. Получается, так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2018, 21:38 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
stanilarВот как раз колхозить огород тут предлагаешь именно ты. Мое предложение (будь такая возможность) - воспользоваться проработанной теорией (а если говорить про другие ЯП то и практикой).Мой колхозный огород - прост, понятен и нагляден как 3 копейки. В отличие от "теории". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2018, 21:39 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
YuRockМой колхозный огород - прост, понятен и нагляден как 3 копейки. А еще он ничем не отличается от моего. В очередь ведь будут добавляться что-то типа колбэков(событий)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2018, 21:44 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
YuRockА если мониторить отписку читателей - проблемы такой не будет. В реактивности, аналогично, можно отписаться от сервера событий. Речь то, на самом деле, про наличие проработанных компонент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2018, 21:48 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
stanilarYuRockМой колхозный огород - прост, понятен и нагляден как 3 копейки. А еще он ничем не отличается от моего. В очередь ведь будут добавляться что-то типа колбэков(событий)?Нет, конечно. Просто указатель на память под результат (если нужно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2018, 21:59 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
YuRockНет, конечно. А как сообщить ждущему потоку, что данные пришли? Он будет сам, в цикле, проверять наличие данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2018, 22:14 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
stanilar, Код: 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. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2018, 00:57 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
stanilarYuRockНет, конечно. А как сообщить ждущему потоку, что данные пришли? Он будет сам, в цикле, проверять наличие данных?Взвести событие, сигнализирующее об этом. Не коллбэк, а событие, которого ожидающий поток ждет и спит при этом, без всяких циклов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2018, 11:11 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
YuRockstanilarпропущено... А как сообщить ждущему потоку, что данные пришли? Он будет сам, в цикле, ш8проверять наличие данных?Взвести событие, сигнализирующее об этом. Не коллбэк, а событие, которого ожидающий поток ждет и спит при этом, без всяких циклов. Вот сейчас как раз сижу, разбираюсь с TEvent Штудирую конец этой статьи: Потоки и методы их синхронизаций в Delphi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2018, 14:20 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
Thread, Хватит TSimpleEvent. TEvent - именованные - для междупроцессных взаимодействий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2018, 14:23 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
истопник в кедах Ну не цикл конечно, тем более что способ реализации WaitOrSignalObject выходит не только за рамки моей компетенции но и интересов(подразумевается, что реализация могла быть через цикл). Но смысл дискуссии был немного про другое. Вот ты, вместо того, чтоб передать коллбэк из потока в общий список, передал коллбэк реализации списка в поток. И что, теперь коллбэк перестал быть коллбэком? P/S/ Не радует меня справка любимой среды WaitOrSignalObject helpEmbarcadero Technologies does not currently have any additional information. Please help us document this topic by using the Discussion page! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2018, 18:36 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
stanilar я это, адресатом ошибся. Пример ТС-у был - в ответ на его картинку. Ну и типа кроссплатформа. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Если про коллбэк - то вопрос в том, в контексте какого потока он будет выполнен и как это реализовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2018, 19:29 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
Я еще во многом не разобрался, но вот в процессе поиска попалась мне очень настораживающая статья: WaitForSingleObject. Why you should never use it. . Там как раз обыгрывается моя ситуация с COM объектами в потоке и как следствие скрытые окна и возможные блокировки. Но я еще не всё осознал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2018, 19:44 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
Thread, 1. Статью не читал. Эта функция - основа всех основ. 2. Если твои COM-объекты окна любят выбрасывать - то, конечно, в доп. потоке реализовать работу будет сложно, мягко говоря. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2018, 20:25 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
Threadнастораживающая статья: WaitForSingleObject. Why you should never use it. . а ещё https://www.transl-gunsmoker.ru/2010/03/msgwaitformultipleobjects.html и тогда Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2018, 20:29 |
|
||
|
Как организовать ожидание пока Thread не отработает задание
|
|||
|---|---|---|---|
|
#18+
Спасибо всем, кто откликнулся! Я решил (как мне кажется) проблему через два TEvent'a. Ниже выкладываю код диаграмму работы. Бросьте пожалуйста взгляд, всё ли в порядке. TThread1 = class(TThread) Код: 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. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 15:12 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39643950&tid=2040896]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
86ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 542ms |

| 0 / 0 |
