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

Отключить аппаратные и программные прерывания
Можно ли отключить все прерывания с помощью программы ASM/C/C++, чтобы получить полный контроль над процессором? Если да -> как? Если нет -> как работают системные вызовы «атомарных» операций (например, вход в критическую секцию)? Спасибо за...
10156 просмотров

Есть ли какие-либо последствия, если никогда не удалять критические разделы?
Я улучшаю большой объем нативного кода, который использует несколько статических критических секций и никогда не вызывает DeleteCriticalSection , оставляя их для обработки выхода для очистки. Нет никаких утечек и никаких опасений по поводу того,...
455 просмотров
schedule 11.04.2022

Каким будет код критической секции для общей очереди, к которой обращаются два потока?
Предположим, у нас есть общая очередь (реализованная с помощью массива), к которой могут обращаться два потока, один для чтения из нее данных, а другой для записи в нее данных. Теперь у меня проблема с синхронизацией. Я реализую это с помощью Win32...
1637 просмотров
schedule 08.06.2022

Являются ли 16 миллисекунд необычно большим временем ожидания выполнения незаблокированного потока, работающего в Windows?
Недавно я выполнял некоторые глубокие проверки времени в приложении DirectShow, которое у меня есть в Delphi 6, используя компоненты DSPACK. В рамках моей диагностики я создал класс Critical Section, который добавляет функцию тайм-аута к обычному...
478 просмотров

Критические секции и возвращаемые значения в C++
Пытаясь создать потокобезопасный контейнерный класс с нуля, я столкнулся с проблемой возврата значений из методов доступа. Например в Windows: myNode getSomeData( ) { EnterCriticalSection(& myCritSec); myNode retobj; // fill retobj with...
1078 просмотров

Win32 - должна ли структура CRITICAL_SECTION иметь определенное (4/8 байт) выравнивание?
Я работаю над проектом, в котором по умолчанию используется 1-байтовое выравнивание, в том числе в местах, где используется структура CRITICAL_SECTION. Я исследую определенный тупик и вижу, что данные в структуре CRITICAL_SECTION, которая вызывает...
326 просмотров

Вложенные блокировки (критическая секция) не работают
Я изучаю критическую секцию (для многопоточности) и нашел класс в Интернете, использующий ее. Я не понимаю, почему мой код не работает - я должен получить "успех" на дисплее консоли, но я этого не делаю. Я неправильно запираю? Я уверен, что...
1163 просмотров
schedule 01.03.2022

Критическая секция при чтении данных потоками
У меня есть два разных потока (помимо основного потока). Первый отправляет в основной поток PostMessage с данными. В результате получения сообщения основной поток модифицирует соответствующие глобальные переменные (разные типы). Другой поток...
1040 просмотров
schedule 09.07.2022

Переменная условия Boost эквивалентна CRITICAL_SECTION
В настоящее время у меня есть раздел кода boost::mutex в моем приложении, который выглядит примерно так {//Lock boost::unique_lock<boost::mutex> lock(some_mutex); while(container.empty()) { condition_var.wait(lock); }/*Block...
342 просмотров

Стоимость мьютекса, критической секции и т. д. в Windows
Я где-то читал, что накладные расходы на мьютекс не так уж велики, потому что переключение контекста происходит только в случае конфликта. Также известны фьютексы в Linux. Справится ли то же самое с Windows? Является ли Critical Section более...
6855 просмотров

Алгоритм критического раздела для удовлетворения хода процессов путем сравнения двух алгоритмов?
Вот два алгоритма для критической секции. Первый не удовлетворяет прогрессивному требованию, а второй является решением. Я думаю, что есть проблема со вторым, но мой лектор этого не признал. Нам нужно как-то присвоить повороту новое значение после...
875 просмотров

Взаимоблокировка EnterCriticalSection
Я нашел некоторый код, который утверждал, что может заставить поток спать в течение точного времени. Тестирование кода, кажется, работает отлично, однако он всегда блокируется после короткого промежутка времени. Вот исходный код. Я ставил...
993 просмотров
schedule 22.05.2022

Критические разделы и отключение / разрушение?
Я не могу понять, что такое правильная процедура выключения, когда у вас есть объект OBJ1, который содержит критический раздел CS и указатель на другой объект OBJ2. Допустим, у вас есть две функции A и B. A входит в критическую секцию, изменяет...
525 просмотров

Зачем нам нужны события для синхронизации потоков?
Если, например, только 1 поток может получить доступ к Critical Section за раз, зачем нам Events , чтобы синхронизировать 2 потока для чтения / записи через него?
64 просмотров

Лучший эквивалент для EnterCriticalSection в Mac OS X?
Какой лучший аналог? Я не нашел разумного решения для такой простой функции. Варианты, о которых я знаю: 1) MPEnterCriticalRegion - это, к сожалению, крайне неэффективно, вероятно, потому, что, несмотря на свое имя, он входит в режим ядра,...
889 просмотров

InitializeCriticalSectionAndSpinCount оптимальный SpinCount (пользовательский режим)
Я не совсем понимаю документацию для InitializeCriticalSectionAndSpinCount: http://msdn.microsoft.com/en-us/library/windows/desktop/ms683476(v=vs.85).aspx В нем говорится: «Вы можете значительно улучшить производительность, выбрав небольшое...
3329 просмотров

Блокировка чтения/записи с использованием только критической секции вызывает взаимоблокировку
Пройдя через этот вопрос с тем же заголовком и его ответы , я подумал попробовать что-то, что действительно должно работать только с использованием критической секции и, следовательно, должно быть намного быстрее, чем существующие решения (которые...
883 просмотров

Сортировка массива в openmp — критический раздел
Очень похоже на этот вопрос Сортировка массива в openmp , который имеет несколько сотен просмотров, но не правильный отвечать. Поэтому я еще раз попробую спросить здесь снова. Я знаю о накладных расходах и бесполезности этого в отношении ускорения...
260 просмотров

Есть ли способ найти время, затрачиваемое функцией в критической секции (между отключением и включением прерываний)
У меня есть функция, которая отключает прерывания перед выполнением функции и повторно разрешает прерывания после завершения функции. Здесь мое требование состоит в том, чтобы найти сколько времени занимает выполнение функции? Абстрактно это...
57 просмотров

Как передать право собственности на объект синхронизации в C++ или Winapi?
Можно ли передать право собственности на мьютекс, критическую секцию и т. д. от первого потока второму потоку, не позволяя тем временем какому-либо третьему потоку захватить право собственности? документация по критической секции запрещает вызывать...
1411 просмотров