Ceki Gülcü (author of Log4j) пишет в своем блоге про крайне неравномерные (максимально неравномерные) результаты при использовании synchronized:
"
runnable[0]: counter=1002
runnable[1]: counter=0
runnable[2]: counter=0
runnable[3]: counter=0
runnable[4]: counter=0
"
При том, что ожидалось "примерно по 200".
Это к тому, что
1) симметричные уравнения и симметричные граничные условия могут давать асимметричные решения;
2) unfair примитивы синхронизации МОГУТ, но НЕ ОБЯЗАНЫ обеспечивать "статистическую честность".
P.S. Кстати, всегда интересовало что говорят заказчику, если в проекте используются unfair примитивы синхронизации, которые могут привести к такому поведению (фактически livelock для некоторых потоков), но во всех тестах ведут себя "хорошо". Что будет если в какой-то момент времени заказчик потеряет деньги из-за таких вот особенностей поведения ПО? Т.е. считать ли проект "выполненным/готовым"?
Показаны сообщения с ярлыком Log4j. Показать все сообщения
Показаны сообщения с ярлыком Log4j. Показать все сообщения
воскресенье, 20 декабря 2009 г.
Подписаться на:
Сообщения (Atom)