powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Чем отличается критическая секция от мьютекса?
25 сообщений из 28, страница 1 из 2
Чем отличается критическая секция от мьютекса?
    #37822600
А чем отличается критическая секция от мьютекса?
По сути ведь критическая секция в Windows это тот же мьютекс перед которым сначала запускается на некоторое время spinlock.
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37822791
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
мьютекс - это у ядра.
критическая секция - это у программы (процесса).


а так одно и то же...
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37822810
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
критическая секция от мьютексаА чем отличается критическая секция от мьютекса?
По сути ведь критическая секция в Windows это тот же мьютекс перед которым сначала запускается на некоторое время spinlock.Тем же чем перекресток отличается от светофора.
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37822840
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
критическая секция от мьютекса,

По назначению и возможностям с точки зрения логики работы кода это одно и то же.

Есть только две особенности, очень важные.
1) мьютекс —объект ядра и он медленнее критической секции.
2) крит. секция принадлежит одному процессу, за счет этого она быстрая, но она не может работать в нескольких процессах, только в одном. У неё нет имени, только адрес, который определен в рамках одного процесса.
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37822910
MasterZivкритическая секция от мьютекса,

По назначению и возможностям с точки зрения логики работы кода это одно и то же.

Есть только две особенности, очень важные.
1) мьютекс —объект ядра и он медленнее критической секции.
2) крит. секция принадлежит одному процессу, за счет этого она быстрая, но она не может работать в нескольких процессах, только в одном. У неё нет имени, только адрес, который определен в рамках одного процесса.
А с чем связано то, что в языках есть только мьютексы, и нету критических секций, а вызывать их можно только через WINAPI?
И есть ли критические секции под Linux/Unix?
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37822917
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
критическая секция от мьютексаА с чем связано то, что в языках есть только мьютексы, и нету критических секций, а вызывать их можно только через WINAPI?
И есть ли критические секции под Linux/Unix?Тут идет мешанина из терминов и "облегчений жизни" которые все усложняют.

В теоретической CS, "критическая секция" это кусок кода который обращается к общему ресурсу.
Кроме этого в виндах (и только в них) есть специальное API для работы с критическими секциями. Смотри EnterCriticalSection

В теоретической CS, mutex это сокращение от "mutual exclusive", теория описывающая критические секции.
Кроме этого существуют библиотеки синхронизации (вариант семафоров и/или замков реализованные через семафоры и/или замки) которые имеют в своих названиях и именах функций слово mutex. Они есть и под винды и под юниксы. Смотри CreateMutex и Pthread Mutex Functions .

А теперь вопрос на засыпку, о каких критических секциях и мьютексах говорили те кто отметился в этом топике? :)
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37822936
Например я говорил об boost::mutex и WINAPI EnterCriticalSection. Но мне казалось, что теория и практика для критических секций одинакова. Она же одинакова для мьютексов.

Насколько я понял под Linux/Unix нету критических секций, а есть только мьютексы, семафоры и спинлоки?
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37822993
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
критическая секция от мьютексаНапример я говорил об boost::mutex и WINAPI EnterCriticalSection. Но мне казалось, что теория и практика для критических секций одинакова. Она же одинакова для мьютексов.

Насколько я понял под Linux/Unix нету критических секций, а есть только мьютексы, семафоры и спинлоки?Ты не правильно понял. Критические секции есть всегда если есть общий ресурс для нескольких процессов или нитей.
То что в виндах придумали упрощающие функции неявно создающие объекты-мьютексы и/или семафоры вовсе не означает что критические секции есть только в виндах.
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37823039
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
White OwlА теперь вопрос на засыпку, о каких критических секциях и мьютексах говорили те кто отметился в этом топике? :) о виндовых.

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

у критикал секшион (в винде) есть только адрес внутри процесса. и получить к нему доступ из вне с обычными привелениями нельзя. да и ненужно.
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37823076
White Owlкритическая секция от мьютексаНапример я говорил об boost::mutex и WINAPI EnterCriticalSection. Но мне казалось, что теория и практика для критических секций одинакова. Она же одинакова для мьютексов.

Насколько я понял под Linux/Unix нету критических секций, а есть только мьютексы, семафоры и спинлоки?Ты не правильно понял. Критические секции есть всегда если есть общий ресурс для нескольких процессов или нитей.
То что в виндах придумали упрощающие функции неявно создающие объекты-мьютексы и/или семафоры вовсе не означает что критические секции есть только в виндах.
А в Linux или Unix есть именно аналог виндовой функции критической секции, т.е. более быстрой чем мьютекс?
И есть ли она в boost?
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37823314
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
критическая секция от мьютексаА в Linux или Unix есть именно аналог виндовой функции критической секции, т.е. более быстрой чем мьютекс?А почему ты считаешь что она более быстрая?
Виндовый набор EnterCriticalSection/LeaveCriticalSection это по существу те-же самые самые методы синхронизации, что и ты сам бы делал через ручное создание мьютексов, семафоров или замков. Я не знаю какой именно механизм винда использует в данном конкретном случае, но магии не бывает. Винда ДОЛЖНА использовать один из этих синхронизирующих механизмов.

критическая секция от мьютексаИ есть ли она в boost?Понятия не имею, я boost'ом не пользуюсь. Может и есть, но если нету то наваять свои собственные никаких проблем не составляет:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
EnterCriticalSection (void (*f) ){
  Если есть семафор/замок ассоциированный с адресом f
     то ждать пока он освободится
     иначе создать новый
  запустить f();
}
LeaveCriticalSection(void (*f) ) {
   освободить семафор/замок ассоциированный с адресом f
}


А будешь ты использовать semaphors, spinlocks или boost::mutex, и как ты будешь хранить список этих автоматически созданных объектов синхронизации решать тебе. Что удобней, то и бери.
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37823424
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а для критической секции предусмотрен кейс, подобный "отказу от мьютекса"?
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37823525
White Owlкритическая секция от мьютексаА в Linux или Unix есть именно аналог виндовой функции критической секции, т.е. более быстрой чем мьютекс?А почему ты считаешь что она более быстрая?
MasterZiv утверждает, что она быстрее
MasterZivЕсть только две особенности, очень важные.
1) мьютекс —объект ядра и он медленнее критической секции .
2) крит. секция принадлежит одному процессу, за счет этого она быстрая , но она не может работать в нескольких процессах, только в одном. У неё нет имени, только адрес, который определен в рамках одного процесса.
Вот меня и интересует, а можно ли в рамках какого либо языка или в частности C++ boost использовать именно быструю критическую секцию и именно из стандарта языка или библиотеки boost?
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37823629
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
критическая секция от мьютексаWhite Owlпропущено...
А почему ты считаешь что она более быстрая?
MasterZiv утверждает, что она быстрее Нууу... я уверен, что в данном случае он ошибается, либо сказал не то что думал :) Нельзя говорить о скорости работы, когда мы используем объекты синхронизации смысл которых остановить выполнение работы до какого-то момента.

С другой стороны, если ты в виндах, то можешь либо один раз написать EnterCriticalSection() и все, либо вручную создать синхронизирующий объект и вручную же прописывать работу с ним. Меньше писать, меньше думать - выше скорость написания программы.

критическая секция от мьютексаВот меня и интересует, а можно ли в рамках какого либо языка или в частности C++ boost использовать именно быструю критическую секцию и именно из стандарта языка или библиотеки boost?ээээ... отдели мух от котлет пожалуйста.
Если ты хочешь использовать функции вот этой группы , то ты можешь их использовать напрямую из С. Никакого boost или других библиотек, только чистый WinAPI. Из других языков возможно будут проблемы - WinAPI рассчитан на чистый Cи остальные языки (включая С++) - чем ближе к Си, тем проще использовать WinAPI.
А так как это WinAPI, то забудь про все остальные ОС.
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37823646
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
White OwlНельзя говорить о скорости работы, когда мы используем объекты синхронизации смысл которых остановить выполнение работы до какого-то момента.Можно говорить о скорости работы. Смысл объектов синхронизации - не остановить выполнение, а гарантировать отсутствие конфликтов. Захват свободного мьютекса - это в любом случае сотни тактов процессора, поскольку системный вызов и переключение контекста. Захват свободной критической секции - единицы тактов, все на пользовательском уровне, без обращения к функциям ядра.
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37823804
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
критическая секция от мьютексаНапример я говорил об boost::mutex и WINAPI EnterCriticalSection. Но мне казалось, что теория и практика для критических секций одинакова. Она же одинакова для мьютексов.

Насколько я понял под Linux/Unix нету критических секций, а есть только мьютексы, семафоры и спинлоки?

Я лично говорил только об объектах синхронизации Win32/64 API.

В линуксах (на самом деле это POSIX) критических секций нет, там есть более хорошо настраиваемые мьютексы.
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37823811
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А с чем связано то, что в языках есть только мьютексы, и нету критических секций, а вызывать их можно только через WINAPI?
И есть ли критические секции под Linux/Unix?[/quot]

Мьютекс в языке -- это совсем другое. Общее только название. Как оно внутри реализовано -- только автору известно, и ещё может быть по-разному на разных платформах, потому как API OS разное.

Да, кстати -- boost::mutex -- это ни фига не "в языке".
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37823819
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему ты считаешь что она более быстрая?

Ну, потому что я сказал :-)

Виндовый набор EnterCriticalSection/LeaveCriticalSection это по существу те-же самые самые методы синхронизации, что и ты сам бы делал через ручное создание мьютексов, семафоров или замков. Я не знаю какой именно механизм винда использует в данном конкретном случае, но магии не бывает. Винда ДОЛЖНА использовать один из этих синхронизирующих механизмов.

Там унутре вроде бы InterlockedIncrement/Decrement и InterlockedCheck используются, они быстрее чем обычный мьютекс.
Не знаю, за счёт чего. Но это всё было писано ещё у Рихтера.
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37823825
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Меча для критической секции предусмотрен кейс, подобный "отказу от мьютекса"?

Кстати да, я про это забыл, ещё есть разные нюансы при ненормальном поведении программы/потока.

если ты абортируешь поток/процесс с захваченным мьютексом, он вроде бы будет автоматом освобождён,
а с крит. секцией всё гораздо хуже. Но эти детали надо читать в API, они ещё и меняются со временем.
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37824048
MasterZivкритическая секция от мьютексаА с чем связано то, что в языках есть только мьютексы, и нету критических секций, а вызывать их можно только через WINAPI?
И есть ли критические секции под Linux/Unix?

Мьютекс в языке -- это совсем другое. Общее только название. Как оно внутри реализовано -- только автору известно, и ещё может быть по-разному на разных платформах, потому как API OS разное.

Да, кстати -- boost::mutex -- это ни фига не "в языке".
Ок, std::mutex :)


White Owlкритическая секция от мьютексаВот меня и интересует, а можно ли в рамках какого либо языка или в частности C++ boost использовать именно быструю критическую секцию и именно из стандарта языка или библиотеки boost?ээээ... отдели мух от котлет пожалуйста.
Если ты хочешь использовать функции вот этой группы , то ты можешь их использовать напрямую из С. Никакого boost или других библиотек, только чистый WinAPI. Из других языков возможно будут проблемы - WinAPI рассчитан на чистый Cи остальные языки (включая С++) - чем ближе к Си, тем проще использовать WinAPI.
А так как это WinAPI, то забудь про все остальные ОС.
Не, меня больше интересует 2 вопроса:
1. Не в WINAPI, а в самих стандартах языков например C++11 и Java нет такого понятия как критическая секция?
2. И если критическая секция по сути тоже что и мьютекс, то зачем в WINAPI есть аж 3 их вида?
- критическая секция
- мьютекс
- фаст мьютекс
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37824105
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37824122
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
критическая секция от мьютексаА в Linux или Unix есть именно аналог виндовой функции критической секции, т.е. более быстрой чем мьютекс?
http://en.wikipedia.org/wiki/Futex
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37824906
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
критическая секция от мьютексаНе, меня больше интересует 2 вопроса:
1. Не в WINAPI, а в самих стандартах языков например C++11 и Java нет такого понятия как критическая секция?Есть конечно. Это понятие есть всегда если есть общие ресурсы и доступ к ним из разных процессов.

Забудь о виндовой "критической секции", называя группу WinAPI функций "критической секцией" ты путаешь и сам себя и тех кто тебя читает.

критическая секция от мьютекса2. И если критическая секция по сути тоже что и мьютекс,Еще раз повторяю: В теоретической computer science, Mutual Exclusion (mutex) это проблема описывающая работу с критическими секциями.
Это вовсе не одно и тоже, близко, неразрывано связано, но не одно и тоже.

критическая секция от мьютекса то зачем в WINAPI есть аж 3 их вида?
- критическая секция
- мьютекс
- фаст мьютексА это ты говоришь о методах решения проблемы синхронизации. О классах объектов которые можно создавать в винде для решения проблемы синхронизации. Этих классов на самом деле больше (около десятка), у них разные ограничения, разные принципы реализации, разные области применения. Какой использовать в конкретном случае - надо смотреть по задаче и по возможностям класса.
Загляни сюда: http://msdn.microsoft.com/en-us/library/windows/desktop/ms686360%28v=vs.85%29.aspx
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37825230
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
критическая секция от мьютексаВот меня и интересует, а можно ли в рамках какого либо языка или в частности C++ boost использовать именно быструю критическую секцию и именно из стандарта языка или библиотеки boost?Правильно написаная библиотека для тех же к примеру pthread_mutex_* функций должна использовать правильную реализацию - CriticalSection в windows и futex в linux. Что там реально в бусте - сами в исходниках посмотрите :)
...
Рейтинг: 0 / 0
Чем отличается критическая секция от мьютекса?
    #37825363
rfq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критическая секция - это земельный участок, а мьютекс - забор вокруг него. Кроме забора, участок можно окружить рвом, а вместо мьютекса соответственно использовать семафор или монитор.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Чем отличается критическая секция от мьютекса?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]