Заблокируйте свободные конструкции в .NET

code=H14 desc="No web processes running? -> Я бы посоветовал: дать вашему приложению динамический интерфейс в интерфейсе heroku

.
5
задан Adisak 30 October 2009 в 02:47
поделиться

5 ответов

В.NET существует Взаимно блокируемый класс со Взаимно блокируемыми статическими методами. Инкремент () и Взаимно блокируемый. Декремент ().

См. http://msdn.microsoft.com/en-us/library/system.threading.interlocked.aspx.

Вы также найдете другие атомарные och конструкции синхронизации в Системе. Поточная обработка пространства имен.

6
ответ дан 13 December 2019 в 05:44
поделиться

Я записал много блокировки свободные неизменные структуры набора в .NET. Это включает, двоичные деревья, карты, массивы, связанный список, и т.д... Источник и двоичные файлы доступны на галерее кода

RantPack

4
ответ дан 13 December 2019 в 05:44
поделиться

Взаимно блокируемый класс имеет все статические методы, должен был сделать простые атомарные операции как инкремент, постепенно уменьшить, сравнить, подкачать, и т.д. Выезд http://msdn.microsoft.com/en-us/library/system.threading.interlocked_members.aspx

Для большинства наборов можно получить синхронизируемый набор через статического участника под названием "Синхронизируемый". Отметьте однако, что это не блокировка свободные конструкции, они просто скрывают беспорядок использования блокировок/семафоров. Проверьте синхронизированный метод набора очереди http://msdn.microsoft.com/en-us/library/system.collections.queue.synchronized.aspx

2
ответ дан 13 December 2019 в 05:44
поделиться

Для получения информации вероятно (здесь), что.NET 4.0 наследует CCR/TPL от Параллельных Расширений. TPL, в частности, представляет диапазон наборов и других конструкций, разработанных для усовершенствованных сценариев поточной обработки (с минимальными блокировками и т.д.).

На данный момент существует ограниченное количество потоковых наборов и т.д., плюс обычные примитивы блокировки, плюс Interlocked, и т.д.

0
ответ дан 13 December 2019 в 05:44
поделиться

Вот проблема, которую я вижу со Взаимно блокируемым классом .NET.

У меня есть несколько потоков, обновляющих счетчик. Каждый поток должен получить уникальное значение счетчика, таким образом никакие потоки не должны получать то же значение.

Путем взаимно блокируемый класс в работах .NET, я имею -

int counter;
void code(){
    myThreadVal = Interlocked.increment(counter);
}

теперь, так как оба потока видят то же значение счетчика, они оба могут получить то же значение myThreadVal.

Однако в случае AtomicInteger Java, которого никогда не происходило бы, каждый поток будет всегда получать различное значение.

0
ответ дан 13 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: