С годами подходы к обработке конкурентности в ядре Linux сильно изменились. К 2023 году в арсенале разработчиков ядра появились, в частности, автозавершения, хорошо оптимизированные мьютексы, а также россыпь неблокирующих алгоритмов. Но были времена, когда управление конкурентностью сводилось к использованию обычных семафоров. Дискуссия о внесении небольшого изменения в API семафоров лишний раз свидетельствует, как сильно они изменились за долгую историю ядра.
Рубрика «семафоры»
Семафоры в Linux медленно сходят со сцены
2023-04-26 в 21:36, admin, рубрики: легаси, мьютексы, Программирование, Процессоры, Разработка под Linux, семафоры, ядроВся правда об ОСРВ. Статья #19. Семафоры: введение и базовые службы
2018-11-09 в 12:37, admin, рубрики: api, rtos, взаимодействие задач, микроконтроллеры, осрв, программирование микроконтроллеров, семафоры, служебные вызовы
Семафоры были упомянуты в одной из предыдущих статей (#5). Их основная задача – управление доступом к ресурсам.
Читать полностью »
STM32 и FreeRTOS. 2. Семафорим по-черному
2015-01-30 в 11:30, admin, рубрики: freertos, open source, stm32, программирование микроконтроллеров, разработка, семафорыВ реальной жизни часто случается так, что некоторые события происходят с разной переодичностью (а могут и вообще не происходить). Скажем, заказ сока в «Макдональдсе», нажатие кнопки пользователем или заказ лыж в прокате. А наш могучий микроконтроллер должен все это обрабатывать. Но как это сделать наиболее удобно?
Семафоры, или как разруливать доступ к ресурсам в DBMS Caché
2014-11-17 в 8:05, admin, рубрики: cache, cache object script, dbms, dbms cache, intersystems cache, Блог компании InterSystems, доступ к объектам, общий доступ, параллельное программирование, Программирование, семафоры Часто при многопользовательском или параллельном доступе к данным возникает ситуация, когда необходимо заблокировать/дать доступ к переменной или участку памяти одновременно нескольким процессам. Решается данная задача с помощью мьютексов, семафоров, мониторов и т. д. В данном посте рассмотрим как же реализован один из методов предоставления совместного доступа к данным — семафор — в СУБД Intersystems Caché.
Читать полностью »
Знакомство с сервисами передачи сообщений PHP
2014-07-04 в 8:09, admin, рубрики: gearman, java, jms, php, семафорыИзучим все детали основных сервисов передачи сообщений доступных в PHP.
- Семафоры
- Gearman
- JMS с PHP:
- QUERCUS
- PHPMQ->MANTARAY
1. Семафоры
Semaphore — это PHP модуль, который на самом делал состоит из трех расширений, и включает в себя семафоры, разделяемую память и межпроцессное взаимодействие (IPC). Этот модуль предоставляет обертки к семейству функций System V IPC; чтобы использовать его в PHP, вам нужно включить этот модуль вручную, так как по умолчанию он отключен; чтобы включить поддержку System V семафоров используйте флаг --enable-sysvsem при компиляции, для включения разделяемой памяти скомпилируйте PHP с --enable-sysvshm, и для включения System V сообщений скомпилируйте PHP с опцией --enable-sysvmsg.
Читать полностью »
PHP IPC — Межпроцессное взаимодействие в PHP
2013-09-10 в 23:26, admin, рубрики: IPC, php, pthreads, виртуальная память, межпроцессное взаимодействие, многопоточность, потоки, семафоры, метки: ipc, PHP, pthreads, Виртуальная память, межпроцессное взаимодействие, многопоточность, потоки, семафорыЦелью данной заметки является ознакомление PHP-разработчиков с возможностями межпроцессного взаимодействия в данном языке. Заметка не предполагает во всех деталях рассказать о каждой из возможностей, деталях реализации или показать рабочие примеры кода.
Поскольку задача распараллеливания рано или поздно появляется у любого программиста, то данная заметка была задумана отправной точкой, с которой можно начать своё путешествие в мир увлекательного геморроя процесса построения таких систем.
Боремся с race condition в PHP
2012-07-26 в 13:44, admin, рубрики: php, race condition, Песочница, семафоры, метки: PHP, race condition, семафорыОшибки типа «Состояние гонки» (race condition) редко встречаются на малонагруженных проектах, а с ростом нагрузки ситуация медленно, но верно меняется. И однажды обычное кеширование данных в файле, например, вот такое:
function getFlagFromFile($filename) {
if (file_exists($filename)) {
if (!$this->validate()) { // а не устарел ли файл?
unlink($filename);
return false;
}
else {
return file_get_contents($filename);
}
}
return false;
}
выдаёт ошибку в строке unlink(): файл $filename не существует!
Читать полностью »