БУДЕТ БУДЕТ.C#

Место общения программистов C#
Ответить
Anonymous
 БУДЕТ БУДЕТ.

Сообщение Anonymous »

Чтобы охранять раздел кода от повторного или одновременного выполнения, я могу использовать блокированные функциональные возможности. Охрана от повторного исполнения необходима для таких вещей, как Dispose () , и защита от одновременного выполнения является фундаментальной частью высокоэффективного многопоточного чтения.
Первоначально я использовал взаимосвязанный. Increment () , потому что если эффективно записывает общее количество вызовов и, следовательно, обладает большей диагностической мощностью, чем варианты, основанные на обменных операциях. Тем не менее, было интересно, может ли Interlocked.comPareExChange () не быть лучшим вариантом в отношении минимизации шума шины процессора и межядерных помех, связанных с операциями обновления межядерного кэша. летучая запись так же, как с блокировкой. Кроме того, общее количество выполнений в использовании, таких как Dispose () , будет сравнительно небольшим, поэтому, кого это волнует. В этом случае может быть огромное количество неудачных попыток выполнения, и для этого не будет никакой летучей записи, если будет использоваться Interlocked.comPareExChange () , давая ему преимущество над двумя другими параметрами. Кроме того, в этом случае Interlocked.increment () имеет дополнительное недостаток, что даже неудачные попытки сбора нуждаются Заинтересованные в игре. Это могло привести к неоправданному предпочтению решений, включающих взаимосвязанный приращение и уменьшение, а не сравнивать с высвобождением с помощью летучей записи.

Подробнее здесь: https://stackoverflow.com/questions/797 ... terference
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»