Я не пытался построить модель «до того, как это произошло», но я реализовал структуры данных без блокировки в .Net (кольцевой буфер без блокировки, совсем недавно).
Ссылки, опубликованные из переменных переменныхгарантированно являются «безопасными», ключевое слово volatile в .Net вызывает прямое считывание этой ссылки из памяти и вынуждает любое изменение этой ссылки выполнять прямую запись в память.
Сравнение двухОднако изменчивые переменные могут привести к несвоевременным выводам.В кольцевом буфере без блокировки, который я написал, это не было проблемой.Метод enqueue иногда считал, что буфер был заполнен, когда это был один застенчивый элемент (удаление очереди происходит так же, как я сравниваю свои изменчивые указатели головы и хвоста);метод dequeue иногда думал, что буфер был пуст по той же причине.Однако в моем случае данные не были потеряны.
Таким образом, чтобы ответить на ваш общий вопрос, внедрение структур данных без блокировки в .Net, безусловно, возможно, я это сделал и без особой боли.