Описание тега interlocked-increment

Interlocked.Increment увеличивает указанную переменную и сохраняет результат как атомарную операцию.
3 ответа

Как первый введенный поток может сигнализировать другим параллельным потокам о завершении того же метода?

Как первый введенный поток может сигнализировать другим параллельным потокам о завершении того же метода? У меня есть метод с именем скажем PollDPRAM(). Он должен совершить поездку по сети на некоторое медленное оборудование и обновить личные данные…
1 ответ

Безопасно ли использовать "небезопасные" функции потоков?

Прошу прощения за мой слегка юмористический титул. Я использую два разных определения слова "безопасный" в нем (очевидно). Я довольно плохо знаком с потоками (ну, я использовал потоки много лет, но только очень простые формы). Теперь я столкнулся с …
1 ответ

Как я могу оперативно назначить уникальные идентификаторы для объектов в C#

Я работаю над библиотекой C#, которая будет создавать тонны небольших объектов как часть нормальной работы (например, узлы AST в компиляторе). Я хотел бы назначить каждому экземпляру уникальный идентификатор (уникальный в рамках программы, а не глоб…
3 ответа

Становится ли оператор C# ++ потокобезопасным в цикле foreach?

Недавно я перешел с VB на C#, поэтому я часто использую конвертер C# в VB.NET, чтобы понять синтаксические различия. При переходе следующего метода на VB я заметил интересную вещь. C# оригинальный код: public bool ExceedsThreshold(int threshold, IEn…
2 ответа

Если Interlocked.Increment является атомарным, почему я должен когда-либо использовать ++ вместо этого?

Я предполагаю, что эта атомная операция быстрее, чем ++, Я вижу только преимущества в пользу Interlocked.Increment, Каковы его недостатки?
23 май '11 в 13:40
3 ответа

Может ли C# блокировать сообщения FIFO в очереди утечки?

Я работаю над академическим проектом с открытым исходным кодом, и теперь мне нужно создать быструю блокирующую очередь FIFO в C#. Моя первая реализация просто обернула синхронизированную очередь (с динамическим расширением) в семафор читателя, затем…
09 окт '10 в 22:46
1 ответ

Управление потоками с высоким / низким приоритетом в.net

Сценарий следующий: существует несколько потоков с низким приоритетом, которые могут быть прерваны потоками с высоким приоритетом. Всякий раз, когда поток с высоким приоритетом просит потоки с низким приоритетом приостановить работу, они переходят к…
0 ответов

Ошибка соединения 2001: нерешенный внешний символ при портировании с 32 на 64 бит

Я пытаюсь портировать 32-битное приложение на 64-битное и у меня проблемы с некоторыми взаимосвязанными функциями, а именно: InterlockedIncrement64, Decrement64, Exchange64, CompareExchange64 а также ExchangeAdd64, Ошибка: ошибка LNK2001: неразрешен…
6 ответов

Чтение int, который обновляется Interlocked в других темах

(Это повторение: как правильно прочитать int-поле Interlocked.Increment? Но после прочтения ответов и комментариев я все еще не уверен в правильном ответе.) Есть некоторый код, которым я не владею и не могу изменить на использование блокировок, кото…
3 ответа

Разница между блокируемым доступом к переменным и критическим сечениями

Может ли кто-нибудь помочь объяснить разницу между блокируемым доступом к переменным И критическим разделам с инкрементным шагом в C++? спасибо, высоко ценится, заранее.
1 ответ

Странное поведение System.Threading.Timer

Я пытаюсь понять, как Timer будет использовать пул потоков. Я написал следующий простой фрагмент. class Program { static private readonly Action Action = () => { Thread.SpinWait(100 * 10000); Interlocked.Increment(ref _data); }; private static vo…
2 ответа

Обработка параллельных заданий / потоков

Я пытаюсь провести рефакторинг своего проекта, и теперь я пытаюсь найти лучшие способы повышения производительности приложения. Вопрос 1. SpinLock против блокировки Для создания счетчика, который имеет лучшую производительность. Interlocked.increame…
1 ответ

SpinLock в C#. В каком типе алгоритма SpinLock является лучшим выбором по сравнению с Monitor?

Возможный дубликат: Почему все утверждают, что SpinLock быстрее? Этот вопрос касается SpinLock, Monitor & Interlocked. Я сделал 2 теста, которые проверяют производительность Monitor, SpinLock а также Interlocked и эти испытания оставили меня в замеш…
1 ответ

Написание многопоточного цикла вручную - неоптимальная масштабируемость

Я написал это тестовое приложение: оно проходит через итерации от 0 до 9999, для каждого целого числа в диапазоне оно вычисляет некоторую бесполезную, но интенсивную для вычисления функцию. В результате программа выводит сумму значений функции. Чтоб…
4 ответа

Атомарность конструктора копирования объекта подсчета ссылок с использованием InterlockedIncrement64

Я пытаюсь обернуть голову, как я могу гарантировать, что счетчик ссылок на объекты является потокобезопасным. class MyObject{ //Other implementation details private: mutable volatile LONGLONG * m_count; IData * m_data; }; Предположим, что есть необх…
6 ответов

Производительность Interlocked.Increment

Является Interlocked.Increment(ref x) быстрее или медленнее, чем x++ для целых и длинных на разных платформах?
2 ответа

ConcurrentQueue один элемент занят двумя потоками

Я хочу, чтобы два потока работали с одной очередью. Первый поток должен вызываться каждые 2 секунды, а второй поток - каждые 3 секунды. Оба потока должны начаться одновременно. У меня проблема при доступе к первому элементу очереди. Оба потока получ…
1 ответ

C# - блокировка приращения по словарю как список

Я знаю, что int не будет иметь фиксированной позиции в памяти, поэтому он просто не может так работать. Но точно такая же часть кода будет выполняться одновременно с разными именами, параметрами и т. Д. Мне нужно по существу передать строку "Имя", а…
0 ответов

Альтернатива Windows InterlockedIncrement64 с использованием C++

Я использую InterlockedIncrement64 в своем приложении для атомарного приращения, чтобы убедиться, что он потокобезопасен. Мой код должен основываться только на библиотеке времени выполнения c, я решил использовать атомарный класс. Я написал следующи…
13 ноя '13 в 22:40
3 ответа

Запутался в использовании Interlocked.Increment и Lock

Я понимаю функциональность Interlocked.Increment а также lock(), Но я не понимаю, когда использовать один или другой. Насколько я могу судить Interlocked.Increment увеличивает общее значение int / long, тогда как как lock() предназначен для блокиров…
07 сен '12 в 09:11