|
|
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questionerВ самом простом случае 1 загребатель и 1 разгребатель на какой очереди тут будет проблема? Да на таком вырожденном случае и без очереди проблем нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 09:45 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевquestionerне сможет... но это Вы к чему, я не понял. К вопросу чем может помешать конечность очереди. Но это только если разгребателей много ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 10:29 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questioner, Как впрочем и писателей. Если они успеют накидать после пилюли кучу сообщений, то очередь может встать, а значит и может встать и часть писателей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 10:36 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, То есть проблем не будет при соотношениях: 1-1 1-М М-1 Для М-М работать на ограниченных очередях не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 11:00 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questioner, проблемы будут, например, если в очередь не смогут записаться все писатели. Пусть у нас 1000 писателей, один читатель и очередь длиной 1000. В силу каких-то IO задержек или по вине шедулера читатель заснул. В это время писатели забили очередь. 999 повисли с попыткой записать что-нибудь. Начался shutdown. 1000-й писатель повис на отпавке пилюли. -- честные жители засыпают просыпается мафия --- Проснулся наконец читатель. Выгреб 1000 сообщений. Очередь оказалась следка не fair и пилюля обогнала 999 других сообщений. По мере разгребания пришли в себя писатели и попытались накидали 999 пилюль. Пока зависли - в очереди 1000 сообщений из которых первая пилюля. Один писатель отвалил. Если читатель отвалит по первой пилюле то, еще один писатель отвалит. А 998 останутся ждать разгребания очереди. Поэтому модели одной пилюли маловато, надо вводить счетчик. и т.п. и т.д. И это еще без варианта, что в процессе shutdown писатель может накидать несколько сообщений. Ну или неограниченную очередь или честную (что по сути почти тоже самое - ибо все одно надо хранить порядок кто за кем за пределами capacity) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 11:13 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев Ну или неограниченную очередь или честную (что по сути почти тоже самое - ибо все одно надо хранить порядок кто за кем за пределами capacity) :) Я думал над этим и думаю, что неограниченная очередь не fair. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. В один момент времени может добавляться только один элемент, в этот момент могут прилететь 2 новые задачи(одна раньше, другая позже) и тут кто их них раньше попадёт в очередь - непонятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 11:36 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевПока зависли - в очереди 1000 сообщений из которых первая пилюля. Один писатель отвалил. Если читатель отвалит по первой пилюле то, еще один писатель отвалит. А 998 останутся ждать разгребания очереди. Поэтому модели одной пилюли маловато, надо вводить счетчик. и т.п. и т.д. И это еще без варианта, что в процессе shutdown писатель может накидать несколько сообщений. Вот тут непонятно. Что значит "отвалит"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 11:45 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questionerЧто значит "отвалит"? Уйдет на покой - т.е. сделает то, что от него требуется при shutdown. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 13:13 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевquestionerЧто значит "отвалит"? Уйдет на покой - т.е. сделает то, что от него требуется при shutdown. Ну дак а в случае если contention на вставку в очередь будет, то такая же история приключится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 13:25 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Об том и речь, что приходится считать сколько читателей, в зависимости от количества читателей и писателей делать длину очереди и пр. И все ради возможности отвалить не по таймауту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 15:26 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, так а ограниченность очереди то тут каким боком? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 15:54 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questioner, В нее должны гарантированно поместится все пилюли и прочее что может накопиться между ними. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 16:20 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевquestioner, В нее должны гарантированно поместится все пилюли и прочее что может накопиться между ними. Это будет проблемой только для М-М? в других случаях нам же не надо ничего нового в очередь добавлять, просто потихоньку съедаем пилюли и считаем их ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 17:11 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевSergunkaДостаточно опубликовать одно сообщение чтоб группа подписчиков свернула свою потребительскую деятельность. Вы шину то с очередью не путаете? Из очереди может прочитать только один. Соответственно надо гарантировать, что прочтут все. Читайте внимательно и не обрезайте чужие сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 07:36 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
SergunkaЧитайте внимательно и не обрезайте чужие сообщения. И чем Вас не устроил ответ, что у этих подходов разные назначения? Очередь нужна для сериализации сообщений и доставки каждого из них до одного обработчика. Для этих задач шина (публикатор-подписчик) мягко говоря не подходит. Грубо говоря когда надо списать 100 рублей, никого не интересует, чтоб это бросились делать все клерки банка одновременно, но нужно сделать так, чтоб один свободный это сделал. Как впрочем и оповещать о пожаре через такую систему глупо - здесь нужен один матюгальник, который слушают все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 18:13 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевquestioner, проблемы будут, например, если в очередь не смогут записаться все писатели. Пусть у нас 1000 писателей, один читатель и очередь длиной 1000. В силу каких-то IO задержек или по вине шедулера читатель заснул. В это время писатели забили очередь. 999 повисли с попыткой записать что-нибудь. Начался shutdown. 1000-й писатель повис на отпавке пилюли. -- честные жители засыпают просыпается мафия --- Проснулся наконец читатель. Выгреб 1000 сообщений. Очередь оказалась следка не fair и пилюля обогнала 999 других сообщений. По мере разгребания пришли в себя писатели и попытались накидали 999 пилюль. Пока зависли - в очереди 1000 сообщений из которых первая пилюля. Один писатель отвалил. Если читатель отвалит по первой пилюле то, еще один писатель отвалит. А 998 останутся ждать разгребания очереди. Поэтому модели одной пилюли маловато, надо вводить счетчик. и т.п. и т.д. И это еще без варианта, что в процессе shutdown писатель может накидать несколько сообщений. Ну или неограниченную очередь или честную (что по сути почти тоже самое - ибо все одно надо хранить порядок кто за кем за пределами capacity) :) Я тут залез в сорцы ThreadPoolExecutor. В очередь сообщения добавляются только через offer, что значит, что сообщение либо сразу добавится(вернётся true), либо не добавится и вернется false. То есть продюсеры висеть не будут. Или Вы про contention ожидание писали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 18:32 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questionerЯ тут залез в сорцы ThreadPoolExecutor. В очередь сообщения добавляются только через offer, что значит, что сообщение либо сразу добавится(вернётся true), либо не добавится и вернется false. То есть продюсеры висеть не будут. Какие-то у тебя сильно далеко идущие выводы. Про то что внутри executor-а есть очередь со своим поведением, про это в сырцах не написано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 18:53 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerЯ тут залез в сорцы ThreadPoolExecutor. В очередь сообщения добавляются только через offer, что значит, что сообщение либо сразу добавится(вернётся true), либо не добавится и вернется false. То есть продюсеры висеть не будут. Какие-то у тебя сильно далеко идущие выводы. Про то что внутри executor-а есть очередь со своим поведением, про это в сырцах не написано? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Вроде как ту, что передали - та и используется без каких-то оберток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 19:04 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
questioner, И по вот этому конструктору ты понял что метод offer не блокирующий? А заглянуть, например, в ArrayBlockingQueue.offer() не догадался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 19:32 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczquestioner, И по вот этому конструктору ты понял что метод offer не блокирующий? А заглянуть, например, в ArrayBlockingQueue.offer() не догадался? по этому конструктору я понял, что никаких манипуляций с очередь не делают, не оборачивают и всё такое BlockingQueue interface: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 19:35 |
|
||
|
Почему poison pill не будет работать для bounded очередей?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, А что Вы сказать то хотели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2017, 12:43 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39411520&tid=2123112]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 337ms |

| 0 / 0 |
