Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: multithread & exception-safe
Показать сообщение отдельно
pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Под раскруткой имеется ввиду последовательное разрушение объектов (unwind), например:
Код: Выделить весь код
class MyForm : public Form
{
     Label   label1;
     Button button1;
public:
     MyForm();
     ~MyForm();
    void do_something_bad();
};

void MyForm::do_something_bad()
{
    vector<int> vector_of_10_ints(10);
    // ...
   // ну ошибся нечаянно
    vector_of_10_ints.at(5) = vector_of_10_ints.at(15);
}

void do_something()
{
    MyForm my_form;
    my_form.do_something_bad();
}

порядок раскрутки:

раскручивается do_something_bad
vector<int>::~vector<int>();

раскручивается do_something
MyForm::~MyForm();
Button::~Button();
Label::~Label();
Form::~Form();

т.к. исключение до сих пор не обработано,
дальше раскручивается функция, которая 
вызвала do_something, и т.д.
насчёт логики - да, хочу этим найти пологичнее...

Отправлено: 10:21, 12-12-2007 | #3

Название темы: multithread & exception-safe