Что означает "грязный флаг" / "грязные значения"?

Я вижу некоторые переменные с именем "грязный" в некотором исходном коде на работе и некоторый другой код. Что это значит? Что такое грязный флаг?

4 ответа

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

Здесь есть более глубокая проблема, а не "Что значит" грязный "? в контексте кода, я думаю, что мы действительно должны спросить - "грязный" ли это подходящий термин для того, что обычно подразумевается.

"Грязный" потенциально сбивает с толку и вводит в заблуждение. Это предложит многим новым программистам испорченные или ошибочные данные формы. Работа "грязная" подразумевает, что что-то не так, и что данные необходимо очистить или удалить. Что-то грязное, в конце концов, нежелательно, нечисто и неприятно.

Если мы имеем в виду "форма была затронута" или "форма была изменена, но изменения еще не были записаны на сервер", то почему бы не "коснулся" или "writePending", а не "грязный"?

Я думаю, это вопрос сообщества программистов.

Грязный может означать несколько вещей, вам нужно предоставить больше контекста. Но в очень общем смысле "грязный флаг" используется, чтобы указать, было ли что-то затронуто / изменено.

Например, посмотрите использование "грязного бита" в контексте управления памятью в вики для Page Table

"Грязный" часто используется в контексте кэширования, от кэширования на уровне приложения до архитектурного кэширования.

В общем, существует два вида механизмов кэширования: (1) сквозная запись; и (2) написать обратно. Мы используем WT и WB для краткости.

WT означает, что запись выполняется синхронно как в кеш, так и в резервное хранилище. (Говоря, например, о кеше и резервном хранилище, они могут обозначать основную память и диск соответственно в контексте баз данных).

В отличие от этого, для WB изначально запись выполняется только в кэш. Запись в резервное хранилище откладывается до тех пор, пока блоки кеша, содержащие данные, не будут изменены / заменены новым контентом.

Данные грязные значения. При реализации WB-кэша вы можете установить грязные биты, чтобы указать, содержит ли блок кеша грязное значение или нет.

Другие вопросы по тегам