Здравствуйте, 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'ней