Re[4]: Реализация критической секции на Interlocked.Exchange
От: drol  
Дата: 29.07.08 18:10
Оценка: :)
Здравствуйте, nikov, Вы писали:

СЮГ>>1) В языке C# есть такое правило, что если функция объявлена так: void F (ref int x) то фактический параметр x не может быть volatile.


N>Кстати, Вы не знаете, какое обоснование для этого правила?


Насколько я понимаю, запись в volatile-переменную должна вызывать появление некоторого дополнительного кода непосредственно в районе инструкции записи. Ну там memory barrier какой-нибудь взвести и т.п.
Однако в случае ref неизвестно что за переменная с "той" стороны: обычная или volatile. Вот и задано явное ограничение.

Наверняка это можно было обрулить, но я вижу только пути с существенной потерей производительности покамест...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.