Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Чем отличается критическая секция от мьютекса? / 25 сообщений из 28, страница 1 из 2
02.06.2012, 15:36
    #37822600
Чем отличается критическая секция от мьютекса?
А чем отличается критическая секция от мьютекса?
По сути ведь критическая секция в Windows это тот же мьютекс перед которым сначала запускается на некоторое время spinlock.
...
Рейтинг: 0 / 0
02.06.2012, 19:29
    #37822791
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем отличается критическая секция от мьютекса?
мьютекс - это у ядра.
критическая секция - это у программы (процесса).


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

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

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

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

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

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

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

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

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

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

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

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

Насколько я понял под Linux/Unix нету критических секций, а есть только мьютексы, семафоры и спинлоки?Ты не правильно понял. Критические секции есть всегда если есть общий ресурс для нескольких процессов или нитей.
То что в виндах придумали упрощающие функции неявно создающие объекты-мьютексы и/или семафоры вовсе не означает что критические секции есть только в виндах.
А в Linux или Unix есть именно аналог виндовой функции критической секции, т.е. более быстрой чем мьютекс?
И есть ли она в boost?
...
Рейтинг: 0 / 0
03.06.2012, 18:51
    #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
03.06.2012, 21:28
    #37823424
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем отличается критическая секция от мьютекса?
а для критической секции предусмотрен кейс, подобный "отказу от мьютекса"?
...
Рейтинг: 0 / 0
03.06.2012, 23:33
    #37823525
Чем отличается критическая секция от мьютекса?
White Owlкритическая секция от мьютексаА в Linux или Unix есть именно аналог виндовой функции критической секции, т.е. более быстрой чем мьютекс?А почему ты считаешь что она более быстрая?
MasterZiv утверждает, что она быстрее
MasterZivЕсть только две особенности, очень важные.
1) мьютекс —объект ядра и он медленнее критической секции .
2) крит. секция принадлежит одному процессу, за счет этого она быстрая , но она не может работать в нескольких процессах, только в одном. У неё нет имени, только адрес, который определен в рамках одного процесса.
Вот меня и интересует, а можно ли в рамках какого либо языка или в частности C++ boost использовать именно быструю критическую секцию и именно из стандарта языка или библиотеки boost?
...
Рейтинг: 0 / 0
04.06.2012, 05:43
    #37823629
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем отличается критическая секция от мьютекса?
критическая секция от мьютексаWhite Owlпропущено...
А почему ты считаешь что она более быстрая?
MasterZiv утверждает, что она быстрее Нууу... я уверен, что в данном случае он ошибается, либо сказал не то что думал :) Нельзя говорить о скорости работы, когда мы используем объекты синхронизации смысл которых остановить выполнение работы до какого-то момента.

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

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

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

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

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

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

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

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

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

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

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

если ты абортируешь поток/процесс с захваченным мьютексом, он вроде бы будет автоматом освобождён,
а с крит. секцией всё гораздо хуже. Но эти детали надо читать в API, они ещё и меняются со временем.
...
Рейтинг: 0 / 0
04.06.2012, 12:49
    #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
04.06.2012, 13:13
    #37824105
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем отличается критическая секция от мьютекса?
...
Рейтинг: 0 / 0
04.06.2012, 13:23
    #37824122
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем отличается критическая секция от мьютекса?
критическая секция от мьютексаА в Linux или Unix есть именно аналог виндовой функции критической секции, т.е. более быстрой чем мьютекс?
http://en.wikipedia.org/wiki/Futex
...
Рейтинг: 0 / 0
04.06.2012, 19:40
    #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
05.06.2012, 08:18
    #37825230
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем отличается критическая секция от мьютекса?
критическая секция от мьютексаВот меня и интересует, а можно ли в рамках какого либо языка или в частности C++ boost использовать именно быструю критическую секцию и именно из стандарта языка или библиотеки boost?Правильно написаная библиотека для тех же к примеру pthread_mutex_* функций должна использовать правильную реализацию - CriticalSection в windows и futex в linux. Что там реально в бусте - сами в исходниках посмотрите :)
...
Рейтинг: 0 / 0
05.06.2012, 10:06
    #37825363
rfq
rfq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем отличается критическая секция от мьютекса?
Критическая секция - это земельный участок, а мьютекс - забор вокруг него. Кроме забора, участок можно окружить рвом, а вместо мьютекса соответственно использовать семафор или монитор.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Чем отличается критическая секция от мьютекса? / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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