Описание тега 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 и всегда возвращаю…
10 май '12 в 15:26
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, оставляя критический раздел, но я не знаю почему. Кто-нибудь может мне помочь…
17 апр '18 в 03:06
1
ответ
Критический раздел, содержащий другой критический раздел?
Допустимо ли размещать критический раздел, как показано ниже: void somefunction() { EnterCriticalSection(&g_List); ... EnterCriticalSection(&g_Variable); ... LeaveCriticalSection(&g_Variable); ... LeaveCriticalSection(&g_List); }
17 янв '14 в 23:00
1
ответ
Важность критического региона и мониторов как механизма синхронизации
Я читал во многих учебниках, что критическая область и мониторы - это механизмы языка высокого уровня, обеспечивающие механизм синхронизации. Я не мог найти более простое объяснение об этом в любом тексте. У меня есть некоторые сомнения по этому пов…
20 сен '11 в 08:21
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++ нашей библиотеки …
15 фев '12 в 07:49
0
ответов
Решение критической проблемы раздела
Требует ли программист включить код в свою программу, чтобы обеспечить решение критической проблемы раздела, или это заботится самой операционной системой? Более того, если программист - это человек, который пишет код для решения проблемы критическо…
27 окт '13 в 16:46
0
ответов
Обработка критического сеанса вне кода - Java
В моем проекте несколько сценариев состояния гонки учитываются путем написания критического раздела внутри кода, поскольку для базы данных Blazegraph нет механизма блокировки. Приложение развернуто в AWS Fargate(докер). Недостатком является то, что …
30 окт '18 в 09:52
8
ответов
Почему мое многопоточное приложение иногда зависает при закрытии?
Я использую несколько критических разделов в моем приложении. Критические разделы предотвращают изменение больших потоков данных и одновременный доступ к ним из разных потоков. AFAIK это все работает правильно, за исключением того, что иногда прилож…
30 дек '10 в 01:06
4
ответа
Необработанное исключение / место записи нарушения прав доступа в примере Mutex
Я работаю над примером защиты глобального двойника с помощью мьютексов, однако я получаю ошибку - Необработанное исключение в 0x77b6308e в Lab7.exe: 0xC0000005: Место записи нарушения прав доступа 0x00000068. Я полагаю, это связано с доступом к счет…
12 май '11 в 14:49
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 в многопоточной среде. Проблема в том, что мне нужно получить доступ к базе данных, чтобы увидеть, был ли уже создан регистр с опр…
26 май '10 в 16:06
4
ответа
Критическая секция очереди
В критических секциях Windows нет концепции очереди? У меня есть следующий цикл рендеринга в отдельном потоке: while (!viewer->finish) { EnterCriticalSection(&viewer->lock); viewer->renderer->begin(); viewer->root->render(viewe…
04 апр '13 в 07:59