Мьютексы, Для того, чтобы вспомнить и улучшить знания |
Здравствуйте, гость ( Вход | Регистрация )
Мьютексы, Для того, чтобы вспомнить и улучшить знания |
AD |
18.11.2011, 8:30
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Хотел бы задать вопрос для того, чтобы вспомнить позабытые со времен университета вещи. Чем плохи мьютексы? Какие есть альтернативы мьютексам? Хотелось бы вкратце вспомнить! За ссылки на какие-то краткие описания буду благодарен, а вот на толстые учебники, спасибо, но не надо. Просто хочется освежить знания.
Сообщение отредактировал AD - 18.11.2011, 8:30 |
|
|
Iron Bug |
18.11.2011, 9:36
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
вообще, если программист так уж боится собственного кода, то есть более "безопасные" реализации.
в бусте, например, есть разные вариации на базе мьютексов: boost::mutex::scoped_lock, timed_lock и т.д. это просто концепции использования мьютексов: Lockable Concept TimedLockable Concept SharedLockable Concept UpgradeLockable Concept http://www.boost.org/doc/libs/1_47_0/doc/h...ronization.html кроме того, есть семафоры, барьеры, условные переменные. да много всяких реализаций. но большинство из них базируется на системных средствах: мьютексах и семафорах. примерно те же концепции используются в других библиотеках. Причем здесь системное или нет? Извини, но я ведь задал конкретный вопрос, относящийся есть ли альтернативы или нет? Судя по твоим постам, альтернативы нет? не во всех системах. скажем так. это НЕ софтовая фича. это системная функция. вопрос лишь в том, поддерживает система ту или иную схему синхронизации или нет. как я уже написала, большинство систем поддерживают мьютексы. остальное чаще всего нагорожено поверх них, с помощью софта. в ядре линюкса есть семафоры и спинлоки (мьютекс - частный случай семафора): http://www.ibm.com/developerworks/linux/li...tion/index.html в венде есть мьютексы, спинлоки и куча фич у ядра, для драйверов: http://msdn.microsoft.com/en-us/windows/hardware/gg487425 в других системах что-то похожее. POSIX декларирует мьютексы и семафоры: http://www.yolinux.com/TUTORIALS/LinuxTuto...sixThreads.html но не факт, что всякие дополнительные фичи реализованы в каждой системе. ты всегда можешь взять документацию на API целевой системы и посмотреть, что там предлагается для работы с синхронизацией. но для кроссплатформы это либо какая-то библиотечная обёртка (тот же буст, или Qt, или порты pthread), либо куча #ifdef'ов и очень некрасивый и сложно поддерживаемый код. Сообщение отредактировал Iron Bug - 18.11.2011, 9:40 |
|
|
Текстовая версия | Сейчас: 29.11.2024, 7:17 |