Вопросы по теме 'critical-section'

Критический раздел всегда быстрее?
Я отлаживал многопоточное приложение и нашел внутреннюю структуру CRITICAL_SECTION . Я нашел элемент данных LockSemaphore из CRITICAL_SECTION интересным. Похоже, что LockSemaphore - это событие автоматического сброса (а не семафор, как...
18469 просмотров

Проблема с несколькими производителями / потребителями и кодами критических разделов
Я пытаюсь решить проблему с несколькими производителями / потребителями в C, но она работает не так, как ожидалось. Ниже приведен псевдокод, представляющий мою реализацию. Thread thread1; Thread thread2; Thread thread3; Data data1; Mutex...
2792 просмотров
schedule 14.10.2021

Синхронизация доступа к данным между несколькими потоками
Я пытаюсь реализовать многопоточную рекурсивную логику поиска файлов в Visual C ++. Логика такова: потоки 1,2 начнутся с местоположения каталога и сопоставят файлы, присутствующие в каталоге, с критериями поиска. Если они найдут дочерний каталог,...
291 просмотров

Блокировка / мониторинг / расширение критического раздела?
Как он вызывается, когда критическая секция расширяется в подкласс или вызывающую функцию? Предположим, что class A имеет синхронизированные методы m1 и m2 class A { public synchronized void m1() {} public synchronized void m2() {} }...
245 просмотров

Очередь критического раздела
В критических разделах Windows нет понятия очереди? У меня есть следующий цикл рендеринга в выделенном потоке: while (!viewer->finish) { EnterCriticalSection(&viewer->lock); viewer->renderer->begin();...
1830 просмотров
schedule 14.10.2021

Почему std :: mutex в два раза медленнее, чем CRITICAL_SECTION
std :: mutex реализован с помощью критических секций, поэтому он намного быстрее, чем OS Mutex (в Windows). Однако это не так быстро, как в Windows CRITICAL_SECTION. Тайминги просто плотный цикл в одном потоке: 423.76ns ATL CMutex 41.74ns...
2969 просмотров
schedule 28.10.2021

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

Понимание TCriticalSection и Synchronize
Я хотел бы подтвердить здесь, правильно ли я понял, как работают TCriticalSection и Synchronize . Насколько я знаю прямо сейчас Synchronize использует SendMessage (обновление: или, по крайней мере, использовал его в более старых версиях VCL,...
3707 просмотров

Блокировка ресурса и создание меток времени в соответствии со временем блокировки
Предположим, что я хотел бы реализовать примитив синхронизации, который генерирует отметку времени, которая будет использоваться в протоколе синхронизации. Отметка времени будет такой, что для заданного ключа , используемого для блокировки ресурса...
137 просмотров

Создать критическую секцию/блокировку для конкретного пользователя
Я разрабатываю веб-сайт электронной коммерции, к которому будут обращаться несколько пользователей. У меня есть метод UpdateUserAmount() , который должен быть синхронизирован для конкретного пользователя , т.е. мы не должны одновременно обращаться...
99 просмотров

Программа многопоточных сокетов — обработка критической секции
Я создаю многопоточную программу, в которой я хочу, чтобы только 1 поток за раз попадал в критическую секцию, где он создает сокет и отправляет некоторые данные, а все остальные ждут очистки этой переменной. Я попробовал threading.Events, но...
88 просмотров

Проблема с критической секцией
proces P0: proces P1: while (true) while (true) { { flag[0] = true; flag[1] = true; while (flag[1]) while...
790 просмотров
schedule 09.04.2022

Может ли алгоритм Петерсона зайти в тупик?
Предположим, у нас есть два процесса (0 и 1). 0 вызывает функцию enter_region. Он устанавливает interested[0]= TRUE Выполнение останавливается. Теперь идет процесс 1. interested[1] = TRUE turn = 1 В цикле while выполняются условия,...
67 просмотров
schedule 20.04.2022

Синхронизация между классами
У меня есть два потока, работающих одновременно, основной поток и слушатель, который реализует Runnable . У основного потока и прослушивателя есть критический раздел, в частности, метод getObjectList(String) в классе Manager, который выполняется...
98 просмотров

Что такое критическая секция?
Просто хочу немного прояснить это. Представьте, что я использую API Windows для EnterCriticalSection. Я называю их всех EnterCriticalSection(&criticalsection); Это многопоточная функция потока. void thread (){ //enter critical section...
2836 просмотров
schedule 05.06.2022

Локальная блокировка потока/деформации в cuda
Я хочу реализовать критические разделы в cuda. Я прочитал много вопросов и ответов на эту тему, и ответы часто касаются atomicCAS и atomicExch. Однако это не работает на уровне варпа, так как все потоки в варпе получают одну и ту же блокировку...
633 просмотров
schedule 13.07.2022

C ++ OpenMP критично: односторонняя блокировка?
Рассмотрим следующую последовательную функцию. Когда я распараллеливаю свой код, каждый поток будет вызывать эту функцию из параллельной области (не показано). Я пытаюсь сделать это потокобезопасным и эффективным (быстрым). float...
2125 просмотров

Почему потоки выполняются последовательно в этом консольном приложении?
Я создаю консольное приложение, которому необходимо запустить несколько потоков для выполнения задачи. Моя проблема в том, что потоки запускаются один за другим (запуск потока 1 -> работа -> конец и ТОЛЬКО затем запуск потока 2), а не одновременно....
2226 просмотров
schedule 02.09.2022

Как я могу реализовать потокобезопасную оболочку списка в Delphi?
У меня есть оболочка списка, которая поддерживает два Tstringlists и TClassList Мне нужно, чтобы это было потокобезопасным, например: Одновременные записи не разрешены (необходимо ввести какое-то состояние ожидания) Чтение во время записи...
2917 просмотров

Утечка памяти из критических разделов в Vista / Win2008?
Похоже, что частое использование критических секций в Vista / Windows Server 2008 приводит к тому, что ОС не полностью восстанавливает память. Мы обнаружили эту проблему в приложении Delphi, и она явно связана с использованием CS API. (см. этот SO...
3896 просмотров