безумный кошмар программиста С++
Feb. 14th, 2013 03:20 amОказывается, любой, совершенно любой оператор в С++ может кинуть исключение. Даже следующий:
int a;
a = 3; // exception is thrown here %-)
Разгадка в том, что в g++ вроде б thread cancellation сделана через прокидывание исключениия. Стоит нам сделать асинхронный мод cancellation, как...
Как может взаимодействовать страшный сам по себе asynchronous thread cancellation и обычные С++ исключения - мне и представить тяжело. Легко можно словить второе исключение при откатке стека, к примеру. Со всеми вытекающими.
При случае можно посмотреть, что там реально в g++ сделано на этот счет. Впрочем, ну этот cancellation нафиг, если по большому счету.
int a;
a = 3; // exception is thrown here %-)
Разгадка в том, что в g++ вроде б thread cancellation сделана через прокидывание исключениия. Стоит нам сделать асинхронный мод cancellation, как...
Как может взаимодействовать страшный сам по себе asynchronous thread cancellation и обычные С++ исключения - мне и представить тяжело. Легко можно словить второе исключение при откатке стека, к примеру. Со всеми вытекающими.
При случае можно посмотреть, что там реально в g++ сделано на этот счет. Впрочем, ну этот cancellation нафиг, если по большому счету.