Dilma писал(а):
в обоих реализациях отсутствует вызов унаследованного деструктора - это надо исправитьСогласен. Я забыл, что в теории - TDebug.Destroy имеет право быть не пустым.
Dilma писал(а):
с точки зрения кода реализация получилась бы гораздо навороченнее по объему кода, но зато быстрее на одну команду процессора при вызове doSafeModeГораздо - это с десяток-другой байт кода, минус тот же код в "боевом" методе. Которые вызываются ОДИН раз
А "одна команда процессора", сбрасывающая конвейер, кстати говоря - вызывается ОЧЕНЬ МНОГО раз. Например, миллион
Экономия кода в отложенных конструкторах достигается за счет другого.
Например, в THIStrList._var_Array - отложенное конструирование. И если мы ничего к этой точке не подключали, то не требуется коды для CreateArray, Set, _Get, _Count, _Add.
Тут - в тему.
Dilma писал(а):
да, это лишнееПо умному, надо делать два абсолютно похожих элемента: с мьютексом, и с критической секцией.
Ну или "два в одном", по св-ву типа Global/Local
