|
Multithread
|
|||
---|---|---|---|
#18+
Драсьте! Задача: нужно остановить через какое-то время длинный процесс. Пытаюсь сделать так: Код: sql 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.
Код: sql 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.
Остановка срабатывает только после завершения цикла. А должна через секунду. Где ошибка? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2017, 11:45 |
|
Multithread
|
|||
---|---|---|---|
#18+
23.03.2017 11:45, Riska пишет: > Остановка срабатывает только после завершения цикла. А должна через секунду. > Где ошибка? А сообщения кто будет обрабатывать ;)? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2017, 13:18 |
|
Multithread
|
|||
---|---|---|---|
#18+
Riska, Уберите SharedObjectRegister(...) и SharedObjectGet(...) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2017, 14:00 |
|
Multithread
|
|||
---|---|---|---|
#18+
Dim2000, 2 потока должны бежать отдельно друг от друга. Запускается цикл. Через секунду запустится стопер. Это не работает. Я не понимаю, почему. Что нужно добавить в скрипт? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2017, 14:04 |
|
Multithread
|
|||
---|---|---|---|
#18+
Raven A, Убрал. Ничего не изменилось. Сообщение из второго объекта выскакивает только после завершения цикла. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2017, 14:07 |
|
Multithread
|
|||
---|---|---|---|
#18+
23.03.2017 14:04, Riska пишет: > Это не работает. Я не понимаю, почему. Потому что никто не обрабатывает сообщения таймера. > Что нужно добавить в скрипт? Елду ;). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2017, 14:36 |
|
Multithread
|
|||
---|---|---|---|
#18+
Dim2000, Ок. А если вместо этого цикла будет SELECT? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2017, 14:48 |
|
Multithread
|
|||
---|---|---|---|
#18+
23.03.2017 14:48, Riska пишет: > А если вместо этого цикла будет SELECT? Лень пробовать, но, подозреваю, ничего хорошего :). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2017, 15:01 |
|
Multithread
|
|||
---|---|---|---|
#18+
Riska, > А если вместо этого цикла будет SELECT ... а поподробнее? В чём мегацель - то? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2017, 15:31 |
|
Multithread
|
|||
---|---|---|---|
#18+
Raven A, Цикл я нарисовал только для примера (и не подумал, что в этом случае Yield решит проблему). Короче, объясняю, что имеем. Отправляется запрос на некий сервис. В ответ получаем string. Если там какая-то проблема (комп выключен!), то происходит зависание. Появилась идея запустить 2 процесса (SharedObjectа): один с селектом Код: sql 1. 2. 3.
второй - через 30 секунд проверит gb_ok. Если до сих пор FALSE, то просто убить процесс и пойти дальше. Как сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2017, 15:47 |
|
Multithread
|
|||
---|---|---|---|
#18+
Если база поддерживает, то SQLCA.DbParameter="CommandTimeout=XXX" Процесс -то, оно, того, канешна, иногда нууу и таки да, если постараться. Однако "штатной" обвязки будет много, стоит оценить затраты. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2017, 16:25 |
|
Multithread
|
|||
---|---|---|---|
#18+
Raven A, Таймаут не поможет. Это некий сервис, который сидит на соседнем сервере (компе). Если этот комп выключен, то запрос туда не доходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2017, 16:32 |
|
Multithread
|
|||
---|---|---|---|
#18+
Зачем делать отдельный объект если есть штатный timer Сначала проверить все через него, потом сделать потоки. А еще предложение, может сначала сделать ping или что-то специфичное, типа tnsping для проверки соединения, а потом уже пускать запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2017, 08:23 |
|
Multithread
|
|||
---|---|---|---|
#18+
Кстати, как вы собираетесь прерывать команду? Что-то смутно себе это представляю. Кроме предложенного таймаута или ретрайва в DW. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2017, 08:30 |
|
Multithread
|
|||
---|---|---|---|
#18+
spas2001, штатный timer есть только в окне и он тоже не помогает. Пинг срабатывает нормально, т.к. ответ получаем от модема. Даже маленький селектик, типа "select 1..." подвисает. Кстати, как вы собираетесь прерывать команду? - Просто убью shared объект. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2017, 12:40 |
|
Multithread
|
|||
---|---|---|---|
#18+
Riska, из серии "сам Бродского не читал ..." Сам не использовал, но можно попробовать поиграться с параметром DBGetTime ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2017, 12:53 |
|
|
start [/forum/topic.php?fid=15&msg=39425781&tid=1335172]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 250ms |
total: | 420ms |
0 / 0 |