metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2008-06-25 02:35 pm

Почему у людей в головах такой страшный бред?

отсюда

Q. У меня неправильно работает многопоточное приложение, иногда не снимается блокировка с ресурса.
A1, нормальный :Используйте правильный паттерн блокировки с обработкой исключений
A2, от красноглазых психов: Используйте POSIX, потому что микрософтовские поделки глючны и содержат в себе только маркетинговые ходы.

Практика показывает, что в то время, как среди программеров под винду очень много программистов не самого высокого уровня, в силу плавной кривой обучений и низкого порога входа, забабоны программистов под юниксы отличаются таким уровнем разнообразия и неадекватности, что от безумных результатов не спасает даже более высокий их средний уровень.

[identity profile] metaclass.livejournal.com 2008-06-25 01:03 pm (UTC)(link)
Исключения в фоновых потоках программу не убивают, если там конечно не массовое повреждение памяти. Просто поток тихо умирает и все, во всяком случае, в дельфи так.
В .net точно не помню, вроде бы обработчик исключения по умолчанию показывает сообщение, вне зависимости от потока, где оно возникло, остальные потоки при этом работают.

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

[identity profile] qehgt.livejournal.com 2008-06-25 01:32 pm (UTC)(link)
А в С++ - завершают (как это так, исключение никто не обработал?!). Но даже если и не завершали бы - вот сдохла у нас working thread, которая отвечает за какую-то нужную параллельно работающую подсистему. Всё, программа уже в нерабочем состоянии.

В результате получается, что если нам нужна гарантия работы программы/устройства, то приходится обрабатывать исключения в месте их возникновения (или максимум - не давать им выходить за пределы кода, с который взаимодействуют другие нити), что сводит их преимущества к нулю.

Но я с этого разговор начинал.

[identity profile] metaclass.livejournal.com 2008-06-25 01:35 pm (UTC)(link)
За потоками для подсистем обычно следит еще один поток-watchdog, который запускает их повторно в случае чего. И считает количество падений, при превышении заданного порога - начинает истерику, зовет админа разбираться, уведомляет по почте, итд.

[identity profile] qehgt.livejournal.com 2008-06-25 01:41 pm (UTC)(link)
Это если систему спроектировали так, что это стало возможным. Я вот, к примеру, таких не встречал.