Информация об изменениях

Сообщение Re[5]: Проект утилитной библиотечки от 17.03.2016 20:55

Изменено 17.03.2016 20:57 Evgeny.Panasyuk

Здравствуйте, nigh, Вы писали:

N>Да нет, там все гораздо глубже. Основная мысль в том, что Disposable и try-finally для семантики локов не подходят и создают ложное ощущение безопасности.


Это проблема exception safety guarantees, она существует и без всяких локов или даже потоков. Она даже существует без using'ов, только ещё хуже.
А вот RAII, Using'и, try-with-resourcues как раз подходят к семантике локов, а ложное ощущение безопасности — это от незнания exception safety.


N>
N>WithdrawMoney(AccountB, 100)    //throw an exception here, will never unlock unless proper recovery is done - likely a deadlock, but not further data corruption by other threads
N>


Если тебе нравиться "likely a deadlock, but not further data corruption by other threads" — то лучше сразу на первом же исключении пристреливать программу и тормозить всю систему, без всяких "likely", чтоб наверняка — так robust'ней
Здравствуйте, nigh, Вы писали:

N>Да нет, там все гораздо глубже. Основная мысль в том, что Disposable и try-finally для семантики локов не подходят и создают ложное ощущение безопасности.


Это проблема exception safety guarantees, она существует и без всяких локов или даже потоков. Она даже существует без using'ов, только ещё хуже.
А вот RAII, Using'и, try-with-resourcues, with — как раз подходят к семантике локов. А вот ложное ощущение безопасности — это от незнания exception safety


N>
N>WithdrawMoney(AccountB, 100)    //throw an exception here, will never unlock unless proper recovery is done - likely a deadlock, but not further data corruption by other threads
N>


Если тебе нравиться "likely a deadlock, but not further data corruption by other threads" — то лучше сразу на первом же исключении пристреливать программу и тормозить всю систему, без всяких "likely", чтоб наверняка — так robust'ней