Атомное чтение-изменение-запись в C # - PullRequest
3 голосов
/ 11 января 2011

Я видел пару мест, цитирующих следующий бит спецификации C #: «Помимо функций библиотеки, разработанных для этой цели, нет гарантии атомарного чтения-изменения-записи». Может кто-нибудь указать мне на эти библиотечные функции?

Ответы [ 2 ]

4 голосов
/ 11 января 2011

Класс Interlocked должен предоставить вам то, что вы ищете;такие как Увеличение и Уменьшение .

3 голосов
/ 11 января 2011

Я думаю, что это относится к таким функциям, как Interlocked.CompareExchange.

Этот метод может использоваться, например, для атомарного обновления double:

static void Add(ref double field, double amount)
{
    double before, after;
    do
    {
        before = field;
        after = before + amount;
    }
    while (Interlocked.CompareExchange(ref field, after, before) != before);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...