Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26163
Рейтинг: 2127
#31: 2011-08-19 14:18:17 ЛС | профиль | цитата
1nd1g0 писал(а):
вторая не вызывается

Все правильно, у поездов тоже есть такая фича, пока первый поезд не пройдет датчик сброса семафора, третий поезд будет висеть в хвосте второго на безопасном расстоянии. Сейчас на ж/д не применяют семафоров, а применяют сфетофоры на определенных расстояниях, которые и предупреждают поезда о занятости пути, это если путь длинный, на разветвлениях около станций применяется как раз случай, описанный Indigo -- третий поезд просто не отправят со станции, пока второй не отойдет на безопасное расстояние
------------ Дoбавленo в 14.18:
Neo писал(а):
Получается своего рода организованный стек FIFO только с подвисанием при накоплении?

Это не стек, это -- кольцо
карма: 22

0
Ответов: 704
Рейтинг: 7
#32: 2011-08-19 14:41:55 ЛС | профиль | цитата
1nd1g0 писал(а):
если не отказались от попыток вовсе (NoWait + Thread.FastStopdoStop)

почти вкурил, но если таймер выдает постоянно потоки на SafeMode, то ему все равно что NoWait, что Wait - будут ждать тихонько очереди? Таймер же будет давить и давить, а не FastStopdoStop
карма: 0

0
Ответов: 3889
Рейтинг: 362
#33: 2011-08-19 14:51:02 ЛС | профиль | цитата
Neo писал(а):
FIFO

Нет, скорее "LIFO".

nesco писал(а):
с подвисанием при накоплении

Вот чтобы не копились "зависшие" потоки (что в итоге вешало всю Вашу программу), я и предлагал использовать один поток с FastStop=False, планомерно обрабатывающий накопившиеся на стеке данные, например, через критическую секцию (Local SafeMode).
------------ Дoбавленo в 14.48:
Neo писал(а):
Таймер же будет давить и давить

При NoWait каждый поток, порождённый таймером будет завершаться не до ходя до onSafeMode, пока не завершится тот, кого он ждал.
------------ Дoбавленo в 14.51:
Чтобы повысить вероятность отработки всех потоков (если их много), ставьте им не кратные друг другу Delay делая поправку на то, что для onSyncExec потоков минимальный Delay заметно обусловлен мощностью системы, и при сильной нагрузке может оказаться выше, чем выставлено (система не будет успевать обрабатывать поток иили поток не будет успевать отрабатывать).
карма: 1

1
Голосовали:andrestudio
Разработчик
Ответов: 26163
Рейтинг: 2127
#34: 2011-08-19 15:00:12 ЛС | профиль | цитата
nesco писал(а):
FIFO


nesco писал(а):
с подвисанием при накоплении


1nd1g0, nesco этого не писал
карма: 22

0
Ответов: 3889
Рейтинг: 362
#35: 2011-08-19 15:12:22 ЛС | профиль | цитата
nesco писал(а):
nesco этого не писал

nesco это цитировал, а 1nd1g0 цитировал nesco.
карма: 1

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#36: 2011-08-19 15:19:43 ЛС | профиль | цитата
1nd1g0 писал(а):
а 1nd1g0 цитировал nesco

А в результате получилось. что это писал, как бы, я. Не комильфо, однако
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#37: 2011-08-19 15:39:21 ЛС | профиль | цитата
1nd1g0 писал(а):
Чтобы повысить вероятность отработки всех потоков (если их много), ставьте им не кратные друг другу Delay делая поправку на то, что для onSyncExec потоков минимальный Delay заметно обусловлен мощностью системы, и при сильной нагрузке может оказаться выше, чем выставлено (система не будет успевать обрабатывать поток иили поток не будет успевать отрабатывать).
Знаменитое русское АВОСЬ.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3889
Рейтинг: 362
#38: 2011-08-19 15:44:52 ЛС | профиль | цитата
nesco, поправил

Tad писал(а):
Знаменитое русское АВОСЬ


Как раз авось будет если не пользоваться рекомендациями, данными в последних двух топиках.
карма: 1

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#39: 2011-08-19 15:55:50 ЛС | профиль | цитата
1nd1g0 писал(а):
ставьте им не кратные друг другу Delay

Позвольте с вами не согласиться -- в самом лучшем варианте перерытие может наступить при количестве циклов равных произведению двух задержек. Только правильная семафорная регулировка может спасти отца Русской демократии от неминуемого крэша
В основнм, все крэши происходят не от чтения каких-то общих данных, а от попытки не вовремя что-то удалить. Я думаю, что пояснять не надо, что если один поток вызывает какой-то общий метод, то удаление этого метода в другом потоке приведет к неминуемому крэшу, по причине того, что исчезнет точка возврата в первом вызове
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#40: 2011-08-19 16:06:54 ЛС | профиль | цитата
nesco, опередил.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3889
Рейтинг: 362
#41: 2011-08-19 16:37:56 ЛС | профиль | цитата
Рассмешили всю обувь в доме Надеюсь, последний пост таки адресован не мне. nesco юморист, я бы до идиотской идеи избежания коллизий игрой с задержками не догадался.

Рекомендация поиграться Delay разных потоков рассчитана исключительно на SafeMode.WaitMode=NoWait (если внимательно читать пост) и призвана к борьбе с эффектом "стоячей волны" - регулярного попадания фронта одного потока под блокировку запускающегося чуть раньше по очереди, длительного другого.

[flood]Этот метод работает и более чем успешно, можете сказать спасибо ему за то, что у Вас есть Интернет ибо похожим методом обеспечивается нейтрализация коллизий пакетов в популярных многоадресных информационных сетях при использовании хабов. Только там ещё хуже - часто задержку определяют американский авось и генератор псевдослучайных чисел Одно радует, современные умные маршрутизаторы коллизий избегают а счёт особенностей механизма работы (разделение физических сред передачи пакетов, буферизация и обработка чипом). Но рудиментный механизм остался)[/flood]
карма: 1

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#42: 2011-08-19 17:19:42 ЛС | профиль | цитата
1nd1g0 писал(а):
Рекомендация поиграться Delay разных потоков рассчитана исключительно на SafeMode.WaitMode=NoWait (если внимательно читать пост) и призвана к борьбе с эффектом "стоячей волны" - регулярного попадания фронта одного потока под блокировку запускающегося чуть раньше по очереди, длительного другого

Здесь я согласен, точно тебя не правильно понял.
карма: 22

0
Ответов: 704
Рейтинг: 7
#43: 2011-08-22 00:09:31 ЛС | профиль | цитата
Вот окончательный вариант схемки стека с выдачей в новый поток. Предыдущие отрабатывали максимум 2 дня. Ставится после работы с базой данных. Работает безотказно уже 5 дней.

code_24958.txt
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#44: 2011-08-22 11:40:58 ЛС | профиль | цитата
Neo,
404 Not Found

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#45: 2011-08-22 11:43:53 ЛС | профиль | цитата
Ага, та же песня.
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)