(no subject)
Nov. 10th, 2011 06:45 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Интересно, есть ли какие-то вменяемые способы (и какие) писать "exception-safe" code в присутствии аппаратных исключений, т.е. вещей типа SEH исключений Windows или signals Unix-a?
По идее, как раз с использованием этого самого SEH написано ядро Windows, но я не так чтоб его много читал, да и по другим поводам.
Чисто теоретически, транзакционную семантику при наличии потенциального Access-Violation в любом месте кода (скажем, из-за ошибки Memory Manager или даже внешней деаллокации из паралельного треда), мне кажется, написать невозможно. Невозможно, поскольку написание exception-safe кода с транзакционной семантикой базируется на использовании некоторых операций, относительно которых заведомо известно, что они исключений не кидают (не генерируют). Такого рода гарантии возможны для прикладного С++ кода, кидающего "программные" исключения, но никак не для аппаратных исключений, которые могут случиться буквально где угодно.
Остается вопрос, какой же уровень safety и защиту от какого типа ошибок (если не от произвольного Access Violation) можно всё же обеспечить в подобном контексте, и что об этом думают или думали, в частности, разработчики Микрософта.
По идее, как раз с использованием этого самого SEH написано ядро Windows, но я не так чтоб его много читал, да и по другим поводам.
Чисто теоретически, транзакционную семантику при наличии потенциального Access-Violation в любом месте кода (скажем, из-за ошибки Memory Manager или даже внешней деаллокации из паралельного треда), мне кажется, написать невозможно. Невозможно, поскольку написание exception-safe кода с транзакционной семантикой базируется на использовании некоторых операций, относительно которых заведомо известно, что они исключений не кидают (не генерируют). Такого рода гарантии возможны для прикладного С++ кода, кидающего "программные" исключения, но никак не для аппаратных исключений, которые могут случиться буквально где угодно.
Остается вопрос, какой же уровень safety и защиту от какого типа ошибок (если не от произвольного Access Violation) можно всё же обеспечить в подобном контексте, и что об этом думают или думали, в частности, разработчики Микрософта.
no subject
Date: 2011-11-11 10:57 am (UTC)no subject
Date: 2011-11-11 03:48 pm (UTC)