Разумно ли заменить boost :: thread и boost :: mutex на c ++ 11 эквивалентов?

Присвоение нулевому обычно является плохой идеей:

  1. Понятно, что это просто бессмысленно.
  2. Со многими переменными у вас может быть достаточно дополнительных присвоений null, что вы в значительной степени увеличить размер метода. Чем длиннее исходный код для чего-то, тем больше умственных усилий предпринимается для его чтения (даже если большая часть его - это просто материал, который можно отфильтровать), и тем легче обнаружить ошибку. Сделайте код более подробным, чем необходимо, только когда это сделает его более понятным.
  3. Возможно, что нулевое присвоение не будет оптимизировано. В этом случае возможно, что скомпилированный код не будет выполнять реальное освобождение до тех пор, пока он фактически не достигнет этого нулевого назначения, тогда как в большинстве случаев, когда переменная будет делать что-либо другое, кроме того, что выпадает из сферы действия (а иногда и раньше), могут быть освобождены. Таким образом, вы можете иметь очень незначительное влияние на производительность.

Единственный раз, когда я назначил бы что-то null для «очистки» переменной, которая больше не будет использоваться, а не потому, что null фактически является значение, которое я явно хочу назначить, находится в одном из двух возможных случаев:

  1. Он является членом возможно долгоживущего объекта, больше не будет использоваться этим объектом и имеет значительный размер. Здесь присвоение null - это оптимизация.
  2. Он является членом возможно долгоживущего объекта, больше не будет использоваться этим объектом и поэтому был бы направлен на выпуск своих ресурсов. Здесь присвоение значения null является вопросом безопасности, так как легче найти случай, когда случайным образом используется нулевой объект, чем где случайно используется расположенный объект.

Ни один из этих случаев не применяется к локальным переменным, только к членам, и оба они редки.

148
задан PersianGulf 15 March 2014 в 18:05
поделиться