|
not enough timers available
|
|||
---|---|---|---|
#18+
Всем привет. Очень большой проект, с кучей юнитов и компонентов. Думаю по этому глупо приводить здесь код. На формах и фреймах лежат созданные в дизайнере TTimer. Фреймы создаются "вручную" и добавляются на форму в единичном экземпляре. Сооствественно объекты TTimer тоже создаются не в множественном числе, без create/free. Всего таймеров в проекте 18. И вот меняя все лишь порядок создания фреймов вываливается исключение 'not enough timers available'. происходит это при попытке включения таймера: Код: pascal 1. 2.
Кто-нибудь знает причину, почему такое это может происходить и вообще как это можно побороть, кроме замены таймеров на tthread? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 15:03 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svd, ты часы на руке носишь? больше одной штуки? или как? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 15:31 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Я бы поставил логирующий брякпоинт на создание таймера и проверил, что код вызывается в самом деле 18 раз, а не 1800 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 15:39 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal, авторЯ бы поставил логирующий брякпоинт на создание таймера и проверил, что код вызывается в самом деле 18 раз, а не 1800 там на разных фреймах это все и показывает, что по разу создается фрейм и так же поразу идет активация. Просто как назло вносил изменения без внесения в CSV и теперь придется откатыватся на большой кусок, но желательно было бы разобратьсяв причинах. Bred eFeMsvd, ты часы на руке носишь? больше одной штуки? или как? я вообще не ношу, я счастливый. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 15:50 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
То есть ты уверен, что таймеров именно ожидаемое кол-во? Попробуй еще в ProcessExplorer или в диспетчере задач хендлы проверить ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 17:36 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal, А что там можно проверить? Тут в одном описании попалась попытка, разъясняющая ситуацию. У парнишки было около 400 таймеров на различных формах и ошибка тоже случалась при включении. Объясняли это тем, что в очереди текущего окна уже есть сообшеня WM_TIMER и ощибка просодит во время TTimer.Update(). В процедуре ничего нет особо криминиального, что можно из дельфи проковырять: обращение к Windows.SetTimer(). попробовал перед вызовом сделать Application.ProcessMessages, но это не помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 18:17 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal То есть ты уверен, что таймеров именно ожидаемое кол-во? Попробуй еще в ProcessExplorer или в диспетчере задач хендлы проверить приложение Win64, handles = 16289. Это x3FA. Вроде не должно быть ограничений на хэндлы. Или я что то не знаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 18:25 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svdВроде не должно быть ограничений на хэндлы. Или я что то не знаю? Приложение по-прежнему не может иметь больше 16к окон одновременно. Такое количество окон просто не имеет смысла, поэтому и лимит никто не увеличивает с прошлого века. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 18:35 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Более того - координаты объектов GDI по прежнему 16-ти разрядные и не могут превышать 32K. Приятно, когда в большом отчете объекты отскролившиеся далеко "вверх" начинают вылезать снизу. "Привет, это снова мы" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 18:59 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Скроллить такой отчёт по пикселю в любом случае стрёмно... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 19:18 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Большое спасибо за предупреждение по поводу хэндлов. Можно ли проблему ограничения количества решить перенесением части графических форм и фреймов в динамическую библиотеку? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 21:39 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
нашел в реджистри два ключа: USERProcessHandleQuota и GDIProcessHandleQuota . Знает кто-нибудь про это, будет ли решением проблемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 21:53 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svd Большое спасибо за предупреждение по поводу хэндлов. Можно ли проблему ограничения количества решить перенесением части графических форм и фреймов в динамическую библиотеку? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 21:57 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Решением проблемы будет нормальная архитектура приложения, ну или хотя бы динамическое создание и освобождение используемых ресурсов. За каким хреном одновременно создавать столько отжирающих ресурсов форм и фреймов? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 21:59 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svd нашел в реджистри два ключа: USERProcessHandleQuota и GDIProcessHandleQuota . Знает кто-нибудь про это, будет ли решением проблемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 22:00 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svd нашел в реджистри два ключа: USERProcessHandleQuota и GDIProcessHandleQuota . Знает кто-нибудь про это, будет ли решением проблемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 22:00 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
white_nigger...хотя бы динамическое создание и освобождение используемых ресурсов. чесно говоря, я постоянно задаю этот вопрос. Но шеф утверждает, что обязательное требование. YuRockНет, решением проблемы будет только нахождение утечки хэндлов. да, после перезагрузки с таймером это проблему не решило. Остается только жесткое порно в виде поиска кривизны. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 22:05 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, таймеры используются для разных целей. Один все время контролирует протокол выполнения и ошибок и записывет даннве в файл. Другой, например, контролирует в ните ручного сканера наличие новых данных и вытягивет их оттуда. Причем в зависимости от фрейма обработка этих данных идет поразному - в одном случае это могут быть данные товара, в другом места или какого либо бокса со вспомогательным кодом. Причем с таким механизмом, имея один скэнер и одну нить по его обработке, данные скэнера можно использовать даже между разными программами. Третий контролирует состояние двери у робота и синхронизирует эти данные между парой других программ. и т.д. по поводу специфических таймеров. Но есть и довольно тупые задачи для таймеров: например при запросе какого либо поиска данных или просто фетчинг этих данных, запрос выполняется в отдельной нити, а данные из нити вытягиваются по таймеру в компоненты типа AdvSmoothListBox, или раз в секунду обновляет данные со значением из базы для таких компонентов. Такие можно как раз озадачиться и объединить в один. За 8 лет разработки именно этой части кода, просто так такую проблему не решить - очень сильные изменения придется вносить в фремворк. А потом еще непонятно сколько тестировать под разными конфигурациями у клиентов - у одних один набор фич отображается, у других другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 22:43 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svd Aleksandr Sharahov, таймеры используются для разных целей. Один все время контролирует протокол выполнения и ошибок и записывет даннве в файл. Другой, например, контролирует в ните ручного сканера наличие новых данных и вытягивет их оттуда. Причем в зависимости от фрейма обработка этих данных идет поразному - в одном случае это могут быть данные товара, в другом места или какого либо бокса со вспомогательным кодом. Причем с таким механизмом, имея один скэнер и одну нить по его обработке, данные скэнера можно использовать даже между разными программами. Третий контролирует состояние двери у робота и синхронизирует эти данные между парой других программ. и т.д. по поводу специфических таймеров. Но есть и довольно тупые задачи для таймеров: например при запросе какого либо поиска данных или просто фетчинг этих данных, запрос выполняется в отдельной нити, а данные из нити вытягиваются по таймеру в компоненты типа AdvSmoothListBox, или раз в секунду обновляет данные со значением из базы для таких компонентов. Такие можно как раз озадачиться и объединить в один. За 8 лет разработки именно этой части кода, просто так такую проблему не решить - очень сильные изменения придется вносить в фремворк. А потом еще непонятно сколько тестировать под разными конфигурациями у клиентов - у одних один набор фич отображается, у других другое. И хэндлы - это не только таймеры. Ты можешь "терять" и окна, и эвенты, и файлы, сокеты, к.секции, мьютексы, семафоры... Всё, что угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 22:47 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Запусти ты уже, наконец-то, в каком-нибудь профайлере свою прогу и закрой через время - он покажет, какие ресурсы не удалены. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 23:02 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svdтаймеры используются для разных целей. Один все время контролирует протокол выполнения и ошибок и записывет даннве в файл. Другой, например, контролирует в ните ручного сканера наличие новых данных и вытягивет их оттуда. На это всё достаточно одного таймера, который по истечению заданного периода запускает ту или иную функцию. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 23:20 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Вангую что заменить его 18 таймеров на 1 не поможет. Видимо их далеко не 18. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 00:03 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
rgreat Вангую что заменить его 18 таймеров на 1 не поможет. Видимо их далеко не 18. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 00:17 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
YuRockЗапусти ты уже, наконец-то, в каком-нибудь профайлере свою прогу и закрой через время - он покажет, какие ресурсы не удалены. Регклярно так и делаю. Потому как часто коллеги, как пионэры, забывают финализировать объекты. Но в этом случае fastmm не сообщает ничего полезного. Dimitry SibiryakovНа это всё достаточно одного таймера, который по истечению заданного периода запускает ту или иную функцию. Не всегда. И не везде. Есть задачи, которые очень критичны ко времени обработки. И если в такой ситуации таймер с интервалом 800мс проводит обработку свое функции 1.5 сек. - это ненормально. Да и никто не отменял ситуацию, когда что-нибудь неправильно пошло, один конкретный таймер остановился, но остальные работают дальше. Простой оборудованя - это для нас потеря денег. Если таймер отвечающий за передачу сообщений от внешней системы остановился, то оператор может найти нужное лекарство через нашу программу (за обновление на экране отвечает другой таймер). То есть отказ одного таймера не есть крах работы всей системы. YuRockОн же показывал, что >16к хэндлов в списке процессов отображается. Там тихий ужас какой-то. Правильно заметил - в тасклисте не только таймеры отображаются, а все хэндлы, используемые приложением. Но почему именно этот конкретный таймер чудит - сегодня буду разбираться. Причем в правиле фреймворка стоит, что при деактивации фрейма, таймера и вспомогательный трэд останавливаются, а при активации запускаются заново. И именно этот таймер при новом запуске бросает тоже самое исключение, а вот на других фреймах, где подобная реализация, такого не происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 10:20 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Fastmm сообщит только о том, что он сам выделил. А утечки хэндлов надо ловить другими средствами. Process Explorer хотя бы покажет, чего именно там так до фига выделено. авторВ процедуре ничего нет особо криминиального, что можно из дельфи проковырять: обращение к Windows.SetTimer(). попробовал перед вызовом сделать Application.ProcessMessages, но это не помогает. Ставишь бряк внутри Timer.Enable с выводом в лог и смотришь, сколько таймеров реально активировалось. Уменьшить кол-во таймеров можно, но для начала надо убедиться, что именно в этом беда ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 10:36 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svd Но в этом случае fastmm не сообщает ничего полезного. Держите каркас модуля, остальное допишите сами Код: 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. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232.
Под x64 не проверялось. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 10:50 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
_Vasilisk_, Спасибо за помощь попробую присобачить, но чуть попозже. Наткнулся на такю штуку. Это продолжение вот этой истории. В общем создал я для эксперемента трэд и внего переместил все создание фреймов: Код: 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.
вот такие пироги с катятами. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 11:51 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svd В общем создал я для эксперемента трэд и внего переместил все создание фреймов: ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 12:01 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Уйююй, какой гневный поток проклятий на мою голову. Эксперимент есть эксперимент. В этом и суть. И ничего немешает разобраться почему же все таки "нельзя". А можен даже и "можно", но "осторожно". В любом случае никто от эксперимента не погиб, неудобно было тестировать, так как csv пришлось использовать "на коленке" в виде zip файлов. _Vasilisk_Зачем? Если все создание у вас происходит в главном потоке? И VCL не умеет работать не в главном потоке. Вообще. Никак. Как видно, коллега, очень даже "как". Если учесть, что создаваемым в потоке VCL ничего отображать не требуется. Вообще то с помощью трэда удалось немного ускорить процесс загрузки, секунд на 10. Но это показатели в симуляции на моем компе, а не на реальном железе. Нужно все таки понять, что мешает таймеру нормально стартовать. @_Vasilisk_ по поводу UWinDbg, я так понимаю в нем нужно гдето в контейнепах типа TList сохранять значения хэндлов? у меня есть нечто подобное в фремворке и именно для отладки, когда выясняю, что в запущеном что то теряется, то я вызываю специальную процедуру, которая в текстовый файлик записивыет стек при создании компонента. имя файлу задаю связанное с хэндлом. При разрушении объекта удаляю файл и смотрю что осталось на диске. Запускается, конечно, медленно, но проколы находит четко. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 12:34 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svd Нужно все таки понять, что мешает таймеру нормально стартовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 12:40 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
rgreat, именно. Но это единственный фрейм, который сбойнул. Сейчас проверяю другие, где тоже есть таймер. Такой фрейм с 4-мя добавленными подфреймами внутрь нормально прокатил и даже не матюкнулся. Что есть у него, чего не хватило первому? Нужно еще попытаться разбить создание такого фрейма на несколько шагов: создание с synchronize, создание в потоке[без synchronize, где это должно проходить параллельно] , и создание перед показом формы[однозначно synchronize, уже добавил виртульный метод]. В последней я как раз и переместил все операции с базой данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 12:55 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
*челодлань* Поначалу было еще нормально, ну мало ли есть жирных систем с прорвой форм... но создание фреймов в потоке это уже клиника. Это ведь вместе с букварем должно было быть выучено. И вопрос уже другой пошел - как ускорять загрузку тонны визуального и БД-шного дерьма, которое без всякой задней мысли запихнули в стартап приложухи. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 13:45 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svdИ если в такой ситуации таймер с интервалом 800мс проводит обработку свое функции 1.5 сек. - это ненормально. А ты понимаешь, что это неизбежно? Что все сообщения всех твоих таймеров помещаются в одну очередь сообщений и выполняются в главном потоке последовательно? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 13:48 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svd Код: pascal 1.
Есть понимание, что делает эта процедура? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 15:34 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, я то понимаю, но другие человеколюди этого не хотят понимать и даже пытаются их в какую-нибудь трэд помещать чтоб организовать таймаут. А потом отрывают меня с вопросом "почему не работает". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 15:35 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
wadman, эта процедура и делает магию в тех частях, где "нельзя использовать VCL в трэдах". Но самое интересное, что параллельная загрузка происходит быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 15:37 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Магии не существует в программном коде. Таймеры работают в потоках, но требуют цикл обработки сообщений там же. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 15:52 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svd Всем привет. Очень большой проект, с кучей юнитов и компонентов. Думаю по этому глупо приводить здесь код. На формах и фреймах лежат созданные в дизайнере TTimer. Фреймы создаются "вручную" и добавляются на форму в единичном экземпляре. Сооствественно объекты TTimer тоже создаются не в множественном числе, без create/free. Всего таймеров в проекте 18. И вот меняя все лишь порядок создания фреймов вываливается исключение 'not enough timers available'. происходит это при попытке включения таймера: Код: pascal 1. 2.
Кто-нибудь знает причину, почему такое это может происходить и вообще как это можно побороть, кроме замены таймеров на tthread? маленькая реплика в сторону, первая проверка - лишняя достаточно Код: pascal 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 16:02 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, теоретически "да" если делать новую реализацию класса. Но логичнее вызвать SetTime/KillTimer, хотя там можно и дичь типа SetWaitTimer поробовать[не уверен, что сработает, как планировалось] . А самое логичное решение в цикле самого трэда организовать проверку наступления события. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 16:11 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svdя то понимаю, но другие человеколюди этого не хотят понимать Если ты это понимаешь, то почему порешь чушь про "800 миллисекунд", "один таймер остановился остальные работают" и прочее "обновление экрана"? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 16:19 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, я должен правильно описывать логику работы модулей, как ее видят разработчики. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 16:23 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svd я должен правильно описывать логику работы модулей, как ее видят разработчики. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 16:35 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
топикстартер? Ты окна ненужные с ненужными таймерами убивать не забываешь??? Самое простое CloseAction := caFree; Пока окна ты не убиваешь, и таймеры в экземплярах висят... (сорри, я не всю ветку фанатично прочёл) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 17:23 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
...а ещё есть тема: var JJJ: int64; JJJ := MAXINT; For i := 0 to JJJ+12 do TTimer.Create(..... Вопрос в студию: а) почему и нет? б) почему зашкал? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 17:33 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Makar4ik ...а ещё есть тема: var JJJ: int64; JJJ := MAXINT; For i := 0 to JJJ+12 do TTimer.Create(..... Вопрос в студию: а) почему и нет? б) почему зашкал? Лучше "For i := 0 to JJJ+42 do" ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 18:54 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
rgreat Makar4ik ...а ещё есть тема: var JJJ: int64; JJJ := MAXINT; For i := 0 to JJJ+12 do TTimer.Create(..... Вопрос в студию: а) почему и нет? б) почему зашкал? Лучше "For i := 0 to JJJ+42 do" Дописывай уже до конца. Код: pascal 1. 2. 3. 4. 5. 6. 7.
Так переполнения не будет - вряд ли до этого дойдёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 19:25 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
YuRock rgreat пропущено... Лучше "For i := 0 to JJJ+42 do" Дописывай уже до конца. Код: pascal 1. 2. 3. 4. 5. 6. 7.
Так переполнения не будет - вряд ли до этого дойдёт. Хватит прикалываться. У человека, скорее всего, как раз экземпляры форм не убиваются, а вы... (ну, и я...) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 00:09 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Makar4ik как раз экземпляры форм не убиваются, а вы... 2 14 раз? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 00:12 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
ъъъъъ Makar4ik как раз экземпляры форм не убиваются, а вы... 2 14 раз? 6, не более. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 00:18 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
....а что, бывает ограничение на создание окон ниже, чем таймеров? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 00:22 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Шутки шутками, но реально, 2 в 14-й таймеров - это глюк мозга у разраба. Так не должно быть, мама должна сыну с молоком в моск вводить ограничения. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 00:25 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
...хотя, я под Win 2000 ловил ограничение в 1024 потока для процесса. Ага, да.... А знаете зачем столько потоков? А низачем. Просто так. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 00:30 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Если кто вдруг не читал, то на тему хэндлов и их количества у Руссиновича было ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 01:40 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
...вообще, есть какая-то там эмпирическая формула... В общем, не более 8-ми потоков на ядро... И если памяти хватает. Если потоки фигнёй не страдают. ..перегруз контекста ядра в Х86 занимает чуть ли не 2000 тактов... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 01:49 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
привествую вас, местные зубоскалы, производитель флейма. Я понимаю ваше желание загадить ресурс, чтоб ищущий какое то специфическое решение не мог быстро его найти, благодаря вашему флейму. Хотя админы для вас и завели отдельные неубиваемые топики без срока давности. Все заданные вами вопросы - находятся в топике. Если бы вы его читали не по диагонали, то и вопросов бы не задавали. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 11:44 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svd Как видно, коллега, очень даже "как" svd Если учесть, что создаваемым в потоке VCL ничего отображать не требуется. svd по поводу UWinDbg, я так понимаю в нем нужно гдето в контейнепах типа TList сохранять значения хэндлов? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 12:50 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
_Vasilisk_А теперь вопрос - где здесь многопоточность? Трэд имеет приоритет в onidle. Из этого следут вывод, что этот idle у основного процесса гдето есть. Вопрос 2. Почему тогда скорость действительно ускорилась на 10 секунд? Ну и получилась плюшка в виде более плавной загрузки и наглядности в виде прогрессбара на сплэше. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 16:02 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
svd Из этого следут вывод, что этот idle у основного процесса гдето есть. svd Вопрос 2. Почему тогда скорость действительно ускорилась на 10 секунд? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 12:01 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
_Vasilisk_ Внезапно: Synchronize помещает в очередь выполнения указанную процедуру и усыпляет поток. Главный поток при работе очереди сообщений, вызывает CheckSynchronize и проверяет не нужно ли чего выполнить еще? Находит помещенный в очередь метод, выполняет его, после этого будит тот поток, который поставил в очередь этот метод. А теперь вопрос - где здесь многопоточность? Внезапно... Надо указывать версию Delphi??? В разных библиотеках Synchronize работает по разному. Идеальный, на мой взгляд - D5 Просто SendMessage. ...Про процесс и потоки: VCL - простите, однопоточный. Там один поток у одного процесса. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2021, 19:04 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
Makar4ik В разных библиотеках Synchronize работает по разному. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2021, 21:05 |
|
not enough timers available
|
|||
---|---|---|---|
#18+
_Vasilisk_ Makar4ik В разных библиотеках Synchronize работает по разному. В каждой. Synhronize в D5 Посмотри библиотеки на том же Берлине, 10.1... УжОс - ужОс... ...мне в 7-ке - прям даже свой TThread писать пришлось, чтобы накладных расходов было меньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2022, 21:16 |
|
|
start [/forum/topic.php?all=1&fid=58&tid=2036665]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
165ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
96ms |
get tp. blocked users: |
2ms |
others: | 238ms |
total: | 549ms |
0 / 0 |