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

Критическая секция
я не уверен в чем-то. когда я использую критическую_секцию/мьютекс/семафор в С++, например, как предотвращается проблема busy_wait? я имею в виду, что когда поток достигает критической секции, а критическая секция занята другим потоком, что...
468 просмотров
schedule 20.08.2023

Сценарий: глобальные переменные в DLL, которые используются многопоточным приложением.
Несколько месяцев назад я наткнулся на интересный сценарий, заданный парнем (в orkut). Хотя я придумал «непереносимое» решение этой проблемы (протестировал его с небольшим кодом), но все же хотел бы знать, что вы, ребята, можете сказать и предложить....
1802 просмотров

Почему мое многопоточное приложение иногда зависает при закрытии?
Я использую несколько критических разделов в своем приложении. Критические секции предотвращают одновременное изменение больших двоичных объектов данных и доступ к ним из разных потоков. Насколько я знаю, все работает правильно, за исключением...
3045 просмотров
schedule 24.12.2022

В чем разница между атомарным и критическим в OpenMP?
В чем разница между атомарным и критическим в OpenMP? я могу сделать это #pragma omp atomic g_qCount++; но это не то же самое, что #pragma omp critical g_qCount++; ?
85984 просмотров
schedule 03.02.2022

Как инициализируется критическая секция, связанная с каждым объектом?
Когда ты говоришь lock (obj) ... .NET использует критическую секцию в obj для синхронизации следующих операторов. Как инициализируется этот критический раздел? (например, инициализируется ли он во время строительства или лениво?)
153 просмотров
schedule 01.07.2022

Понимание семафоров
Я читаю о семафорах в «Концепции операционных систем» (для тех из вас, кто это знает), и мне казалось, что я полностью понимаю семафоры, пока не прочитал этот отрывок: Важнейшим аспектом семафоров является то, что они выполняются атомарно. Мы...
10023 просмотров
schedule 03.02.2023

защита критической секции мьютексом
Допустим, у меня есть общий объект, часть кода которого защищена критическим разделом, и более 1 потока обращаются к объекту для чтения/записи. Когда поток находится внутри критической секции, другие потоки ждут. Как только поток выходит из CS, ОС...
826 просмотров
schedule 05.03.2022

Синхронизация потоков на основе значения
Я пытаюсь синхронизировать потоки в критической секции, но мне нужно сделать это на основе значения. Например, если у вас есть потоки, выполняющие работу, представляющую разных людей (т. е. Боба, Фреда, Билла), тогда потоки для Боба и Билла могут...
127 просмотров

Как я могу предоставить право собственности на мьютекс определенному потоку?
Представьте, что у меня заблокирован мьютекс. Существует неограниченное количество других потоков, ожидающих блокировки мьютекса. Когда я разблокирую мьютекс, один из этих потоков будет выбран для входа в критическую секцию. Однако я не могу...
312 просмотров
schedule 03.02.2022

Как работают бинарные семафоры?
Я изучал бинарные семафоры, когда возник следующий вопрос: Предположим, что есть 3 параллельных процесса и 3 бинарных семафора... Семафоры инициализируются как S0=1, S1=0, S2=0. Процессы имеют следующий код: Process P0:...
699 просмотров

Синхронизация процессов
Факторы, определяющие часть кода как критическую секцию Насколько я понимаю, process synchronization используется с использованием структур данных ядра, таких как semaphores , для предотвращения одновременного доступа к critical section кода....
1337 просмотров

Алгоритм планировщика ЦП
Я пытаюсь смоделировать, что два моих процесса, которые выполняются на двух разных процессорах, входят в критическую секцию. Когда инструкция обоих процессов становится «CS», я хотел бы отправить один из них в заблокированную очередь. Однако, даже...
315 просмотров
schedule 06.06.2023

как безопасно увеличивать при использовании потоков в java
привет, ребята, мне было интересно, могу ли я получить небольшой совет, я пытаюсь написать программу, которая может подсчитывать, сколько потоков ожидает обработки функции, а затем, как только достигается определенное число, она освобождает весь...
362 просмотров

Как объект Critical Section работает точно для нескольких методов
СЛУЧАЙ I: Сценарий: у меня есть два разных метода, каждый из которых использует общий глобальный ресурс. К Method1() обращаются ThreadA и Method2() многие другие потоки, но не ThreadA. Требование . Мне нужно, чтобы ThreadA...
1359 просмотров

OpenMP выявляет тупик в критической конструкции
Я пытаюсь точно понять, почему возникает тупик, когда в параллельной области критическая конструкция вложена в критическую конструкцию. Я воспользовался следующими ресурсами: этот источник пишет автор: В OpenMP это может произойти, если...
2015 просмотров

Многопоточность C++ — потокобезопасный код
Я работаю над игровым движком, который работает с .dll. Внутри есть экспортированная функция, которая возвращает ссылку на объявленный в ней статический класс, как показано ниже: __forceinline __declspec(dllexport) STATE*...
226 просмотров

Приостановка потока со свойством
У меня есть объект TThread, и я хочу иметь возможность запускать/останавливать поток с помощью кнопки в главной форме программы. Я искал способы сделать это, и до сих пор у меня есть следующие идеи: Завершите и освободите поток, когда...
747 просмотров

Как инструкция test_and_set() могла работать на мультипроцессоре?
Уважаемое сообщество, занимающееся переполнением стека! Я читаю «Концепции операционной системы» (2012 г.) Зильбершаца, Галвина и Ганя, там говорится: «Если две инструкции test_and_set() выполняются одновременно (каждая на разных процессорах), они...
438 просмотров

Защита критического раздела в многопоточной программе
У меня есть многопоточная программа Python (финансовая торговля), в которой определенные потоки выполняют критические разделы (например, в середине выполнения сделки). Поток, выполняющий критические разделы, является потоком демона. Основной поток...
378 просмотров
schedule 24.05.2022

Критическая секция Windows — как полностью отключить вращение
Я пытаюсь установить счетчик спинов для CRITICAL_SECTION на ноль разными способами: int main() { CRITICAL_SECTION cs; ::InitializeCriticalSection(&cs); printf("Spin count by default %08X\n", cs.SpinCount);...
778 просмотров