|
|
|
Когда использовать CyclicBarrier ?
|
|||
|---|---|---|---|
|
#18+
Читаю про синхронайзеры. Прочитал про CyclicBarrier. Не могу придумать жизненную ситуацию, когда его использовать. Помогите Я так понимаю суть синхронайзера в том, что поток достигает некоторой точки и ждёт пока остальные n-1 потоков не достигнут определенной точки. Когда n потоков достигли определенной точки - выполняется callback барьера и потоки "зависшие" на определенной точке продолжают выполнение. при следующем достижении потоками barrier.await() - всё будет идти по кругу. определенная точка == barrier.await() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2015, 20:44 |
|
||
|
Когда использовать CyclicBarrier ?
|
|||
|---|---|---|---|
|
#18+
Это достаточно специфичный синронайзер, на практике встречается редко. Обычно это тесты: 1) Тесты многопоточности, когда пытаются понять корректно ли работает код при одновременном начале работы X потоков одной точки. 2) Тесты перфоманса, когда надо попытаться начать работу чего-либо из разных потоков по возможности одновременно. В общем, редкий зверь. Он не один такой в JDK. Phaser часто встречали? А DelayQueue? В JDK много такого можно найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2015, 21:20 |
|
||
|
Когда использовать CyclicBarrier ?
|
|||
|---|---|---|---|
|
#18+
cdtyjvЭто достаточно специфичный синронайзер, на практике встречается редко. Обычно это тесты: 1) Тесты многопоточности, когда пытаются понять корректно ли работает код при одновременном начале работы X потоков одной точки. 2) Тесты перфоманса, когда надо попытаться начать работу чего-либо из разных потоков по возможности одновременно. В общем, редкий зверь. Он не один такой в JDK. Phaser часто встречали? А DelayQueue? В JDK много такого можно найти. Просто задачку задали придумать и сделать с использованием CyclicBarrier, а мне даже ситуацию нормально не придумать. В JDK java doc-e пример какой-то кисленький. То, что вы описали - там вполне достаточно и CountDownLatch-а. про Phaser пока только слышал и не разбирался для чего он нужен)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2015, 23:49 |
|
||
|
Когда использовать CyclicBarrier ?
|
|||
|---|---|---|---|
|
#18+
questionerтам вполне достаточно и CountDownLatch-а. про Phaser пока только слышал и не разбирался для чего он нужен)) CyclicBarrier можно переиспользовать, т.е. делать несколько фаз, в каждой из которой стартует N потоков одновременно Phaser вроде как позволяет динамически менять число N в процессе работы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2015, 13:59 |
|
||
|
Когда использовать CyclicBarrier ?
|
|||
|---|---|---|---|
|
#18+
questionerЧитаю про синхронайзеры. Прочитал про CyclicBarrier. Не могу придумать жизненную ситуацию, когда его использовать. Помогите Я так понимаю суть синхронайзера в том, что поток достигает некоторой точки и ждёт пока остальные n-1 потоков не достигнут определенной точки. Когда n потоков достигли определенной точки - выполняется callback барьера и потоки "зависшие" на определенной точке продолжают выполнение. при следующем достижении потоками barrier.await() - всё будет идти по кругу. определенная точка == barrier.await() Простой HTTPClient c CyclicBarrier задачка простая - есть в инете - скачки http://www.life-prog.ru/2_22916_CyclicBarrier.html https://www.ibm.com/developerworks/ru/library/j-5things5/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2015, 16:23 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39026512&tid=2125078]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 382ms |

| 0 / 0 |
