Описание тега critical-section

Критический раздел относится либо к фрагменту кода, который будет выполняться одновременно в нескольких потоках, обращающихся к глобальным данным или ресурсам (требующим синхронизации), либо к спин-блокировке на уровне пользователя в сочетании с объектом мьютекса в операционной системе Windows. Критическая секция в последнем смысле функционально идентична мьютексу, потому что она не может использоваться совместно с другим процессом, и что она на несколько порядков быстрее в случае отсутствия перегрузки.
1 ответ

Критические разделы - контроль доступа

У меня есть 1 критический раздел (раздел A) и два других раздела (B и C). Я пытаюсь достичь этих двух целей: Если поток попадает в раздел A, я хочу убедиться, что разделы B и C не могут быть выполнены любым другим потоком (на время раздела A). Однак…
10 окт '13 в 09:30
1 ответ

Нужно ли удалять DeleteCriticalSection в Destructor?

Я новичок в C++ и в моей программе у меня есть класс, который имеет закрытого члена (CRITICAL_SECTION csPtr). InitializeCriticalSection(&csPtr) называется в моем конструкторе. Мой вопрос, мне нужно позвонить DeleteCriticalSection(&csPtr) в м…
17 янв '17 в 04:08
3 ответа

Защита без блокировки для синхронизированного захвата / выпуска

У меня есть общий ресурс tempfile, который разделен на куски по 4K (или какое-то подобное значение). Каждый 4K в файле представлен индексом, начинающимся с нуля. Для этого общего ресурса я отслеживаю используемые индексы блоков 4K и всегда возвращаю…
2 ответа

Как OpenMP реализует доступ к критическим разделам?

Я хочу прочитать входной файл (в C/C++) и обработать каждую строку независимо, как можно быстрее. Обработка занимает несколько тактов, поэтому я решил использовать потоки OpenMP. У меня есть этот код: #pragma omp parallel num_threads(num_threads) { …
06 июн '12 в 21:25
1 ответ

Является ли блокировка и разблокировка CriticalSection в Destructor правильным способом?

class MyClass { ... ... CCriticalSection m_Cs; void MyFunction() { m_Cs.Lock(); ..... m_Cs.Unlock(); } MyClass::~MyClass() { .... } }; Я использую критический раздел в своем классе, как указано выше, myFunction вызывается потоком 1, а когда myFuncti…
22 авг '13 в 13:28
0 ответов

Алгоритм взаимного исключения Дейкстры

Я пытаюсь реализовать алгоритм взаимного исключения Дейкстры в C с OpenMP, алгоритм выглядит следующим образом: {1}: Тем не менее, с моим кодом только Po будет вводить en, оставляя критический раздел, но я не знаю почему. Кто-нибудь может мне помочь…
1 ответ

Критический раздел, содержащий другой критический раздел?

Допустимо ли размещать критический раздел, как показано ниже: void somefunction() { EnterCriticalSection(&g_List); ... EnterCriticalSection(&g_Variable); ... LeaveCriticalSection(&g_Variable); ... LeaveCriticalSection(&g_List); }
17 янв '14 в 23:00
1 ответ

Важность критического региона и мониторов как механизма синхронизации

Я читал во многих учебниках, что критическая область и мониторы - это механизмы языка высокого уровня, обеспечивающие механизм синхронизации. Я не мог найти более простое объяснение об этом в любом тексте. У меня есть некоторые сомнения по этому пов…
2 ответа

Это действительно для многоуровневой критической секции?

Например, это действительно? CRITICAL_SECTION cs_A; CRITICAL_SECTION cs_b; ::InitializeCriticalSection( &cs_A ); ::InitializeCriticalSection( &cs_B ); ::EnterCriticalSection( &cs_A ); // First level /* do some stuff with A */ ::EnterCrit…
08 июн '15 в 13:12
1 ответ

Delphi: Многопоточность, Потокобезопасность не работает

Когда данные отправляются в "туннельный" сокет, они иногда объединяются, реализуют критический раздел, но он не работает.. Что я делаю не так? type my_ff_thread = class; my_ss_thread = class; Tmy_tunnel_from_MappedPortTCP = class; Tmy_thread_list = …
14 дек '11 в 23:52
2 ответа

Приложение.NET зависает с тупиком GC-потока

У нас есть проблема с нашим приложением, которое использует смесь управляемого (C#) и неуправляемого (C++) кода. По сути, у нас есть исполняемый файл, который вызывает несколько сборок, и одна из этих сборок является оболочкой MC++ нашей библиотеки …
0 ответов

Решение критической проблемы раздела

Требует ли программист включить код в свою программу, чтобы обеспечить решение критической проблемы раздела, или это заботится самой операционной системой? Более того, если программист - это человек, который пишет код для решения проблемы критическо…
27 окт '13 в 16:46
0 ответов

Обработка критического сеанса вне кода - Java

В моем проекте несколько сценариев состояния гонки учитываются путем написания критического раздела внутри кода, поскольку для базы данных Blazegraph нет механизма блокировки. Приложение развернуто в AWS Fargate(докер). Недостатком является то, что …
8 ответов

Почему мое многопоточное приложение иногда зависает при закрытии?

Я использую несколько критических разделов в моем приложении. Критические разделы предотвращают изменение больших потоков данных и одновременный доступ к ним из разных потоков. AFAIK это все работает правильно, за исключением того, что иногда прилож…
30 дек '10 в 01:06
4 ответа

Необработанное исключение / место записи нарушения прав доступа в примере Mutex

Я работаю над примером защиты глобального двойника с помощью мьютексов, однако я получаю ошибку - Необработанное исключение в 0x77b6308e в Lab7.exe: 0xC0000005: Место записи нарушения прав доступа 0x00000068. Я полагаю, это связано с доступом к счет…
3 ответа

Поддерживает ли Boost поддержку Windows EnterCriticalSection API?

Я знаю, что в Boost есть поддержка мьютексов и lock_guard, которые можно использовать для реализации критических секций. Но в Windows есть специальный API для критических разделов (см. EnterCriticalSection и LeaveCriticalSection), который является О…
10 янв '16 в 20:43
3 ответа

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

У меня есть массив элементов, которые обрабатываются задачами openmp. Вполне возможно, что задача может добавить новые элементы в конце массива. Конечно, эти элементы также должны быть обработаны и могут создавать новые предметы. В настоящее время я…
11 сен '12 в 09:37
1 ответ

Критический раздел 2-я попытка?

Следующий алгоритм для задачи взаимного исключения не удовлетворяет свойству взаимного исключения. это удовлетворить тупик, голод? И также это работает правильно в отсутствии раздора? int p=1; int q=1; process P process Q while(true){ while(true){ a…
28 дек '11 в 11:57
2 ответа

Защита критических разделов на основе условия в C#

Я имею дело с курьезным сценарием. Я использую EntityFramework для сохранения (вставки / обновления) в базу данных SQL в многопоточной среде. Проблема в том, что мне нужно получить доступ к базе данных, чтобы увидеть, был ли уже создан регистр с опр…
4 ответа

Критическая секция очереди

В критических секциях Windows нет концепции очереди? У меня есть следующий цикл рендеринга в отдельном потоке: while (!viewer->finish) { EnterCriticalSection(&viewer->lock); viewer->renderer->begin(); viewer->root->render(viewe…
04 апр '13 в 07:59