agentex
offline
Опыт:
34,834Активность: |
Уничтожение потока
Имеется такая связка ф-ий:
Код:
как известно, функция ExecuteFunc создает поток и вызывает в нем функцию которая в скобках. Я провел эксперимент и выяснил, что максимальное число потоков, создаваемое таким образом - 1386, после этого вар крашится. Эту проблему я решил поочередными вызовоми call B() и ExecuteFunc("B"). Но все же интересно - можно ли уничтожить поток когда тебе надо? (в данном случае в конце функции B). И еще вопрос - сколько максимум вызовов функций можно сделать в 1 потоке до Hit Op Limit'а? |
24.02.2009, 12:50 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
оператор ретунр (который также внегласно ставиться перед ендфункцион) совершает возврат в вызывающуую процедуру, если таковой нет - то поток прекращаеться
для управлением потока из другого потока стоит использовать к примеру глобальную булеану, а в управляемом потоке проверять ее состояние |
24.02.2009, 12:56 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
ADOLF то есть в общем виде это выглядит так:
Код:
agentex добавил: или лучше сначала завершать поток, а затем создавать новый? agentex добавил: а блин ступил, если уничтожиш поток последующие строчки то не выполнятся) |
24.02.2009, 13:05 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
ступил, причем полностью=) в твоем примере ретурн ненужен (я писал что ендфунцтион и есть ретурн), причем внутренний поток будет являться продолжением внешнего просто напросто, там наверное цикл дб? |
24.02.2009, 13:13 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
хм, а почему же такой лимит - 1386 этих продолжений? можно вообще отдельный поток создать?
Цитата:
втф дб? agentex добавил: ну вобщето я разрабатываю систему шифрования чисел |
|
24.02.2009, 13:18 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,700Активность: |
agentex, дб=должно быть. Разрабатываешь систему на основе какой? Могу помочь, если надо =)
|
24.02.2009, 13:36 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
а ну цикл я показал где, он там один.
Hellfim хм нету никакой основы.. просто надоело юзать чужую CCS и решил сделать свою системку. Впринципе кодер декодер уже готовы, ща думаю как эффективно сжимать равкоды |
24.02.2009, 13:42 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
бред какой-то, единственная модель, которая позволяет контроллировать потоки в jass, аналогична событийной модели в win api (event, semaphore), то есть только через общую память - глобальные переменные. Другой поток нельзя уничтожить тогда когда тебе это хочется, Адольфег все написал... |
24.02.2009, 13:45 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
В таком случае тема подлежит закрытию, только вы на второй вопрос ответьте про хит оп лимит |
24.02.2009, 13:48 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
проверь... если через call то зависит от содержимого функции, впрочем, не более 8000 если в новом потоке - хз, думаю, что до 20000 |
24.02.2009, 13:50 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
содержимое довольно скудно - 1 луп и несколько ифов и арифм. действий |
24.02.2009, 13:57 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
новый поток = новый лимит операций, старый поток = операции добавляются к уже выполненным
посмотри вот это сообщение http://xgm.guru/forum/showpost.php?p=464300&postcount=12 мой личный опыт тестирования лимита, там количество вызовов "пустой" функции ограничивается 150000 |
24.02.2009, 14:09 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
выстрелить себе в ногу
жасс: вы пытаетесь получить хендл ноги через рб, но в это время движок завершает процес. в следующий раз при более осторожном вызове рб фции из нового потока вы узнаете что нога уже простреленна движком вара. |
24.02.2009, 14:18 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|