Эти обьекты применяются для синхонизации нитей или процессов:
Семафор -- это обьект, который ограничивает доступ к ресурсу для строгого количества нитей/процессов. Все процессы/нити, которые обратились после того, как ресурс начали использовать максимально допустимое количество их колег, засыпают пока в порядке очереди име не освободится возможность использовать ресурс.
Мьютекс(mutual exclusion) -- это семафор, который позволяет завладеть ресурсом только одному обьекту. При этом мьютекс ведет учет сколько заблокировано других ожидающих обьектов.
Спинлок -- это тотже мьютекс только вот он не ведет учет, кто там и что ждет. Каждый обьект сам в цикле проверяет переключатель, показывающий освободился ли ресурс или нет. Спинлок продуктивнее мьютекса в случае малого и среднего времени владения ресурсом, если же время довольно длительное, то лучше использовать мьютекс. Обьяснение: в случае мьютекса нужно создавать и поддерживать менеджер ведения учета, если время владения ресурсом маленькое, то это неефективно работать такому обьекту. Если же время длительное, то процессы мониторящие в циклах флаг будут постоянно отвлекать процессорные ресурсы на проверку флага - эфективнее будет переключить состояния менеджера в начале процесса использования ресурса и в конце, а в промежуток между ними не делать лишних движений.
Фьютекс(fast userspace mutext) - скоростной мьютекс, который хранится в юзерспейсе в виде выравненного целого. Правильно разработанный лок, основанный на фьютексе, не будет дергать относительно дорогостоящий системный вызов из кернелспейса, посколько обычно когда создают такой лок, не нужно "спорить" потокам за ресурс.
Но все же если в редких случаях, нужно, например, "проснуться" потоку на отпускаение лока, то тогда обрщаются к системному вызову.
Обьекты(процессы/нити) могут быть либо читателями либо писателями. На первых обычно обьект синхронизации реагирует как семафор -- ограничивает одновременный доступ только излишнему количеству обьектов. А вот на писателей он реагирет как мьютекс -- когда такой обьект завладевает ресурсом, то ни читатели, ни другие писатели не могут в этот момент получить доступ к ресурсу.
Семафор -- это обьект, который ограничивает доступ к ресурсу для строгого количества нитей/процессов. Все процессы/нити, которые обратились после того, как ресурс начали использовать максимально допустимое количество их колег, засыпают пока в порядке очереди име не освободится возможность использовать ресурс.
Мьютекс(mutual exclusion) -- это семафор, который позволяет завладеть ресурсом только одному обьекту. При этом мьютекс ведет учет сколько заблокировано других ожидающих обьектов.
Спинлок -- это тотже мьютекс только вот он не ведет учет, кто там и что ждет. Каждый обьект сам в цикле проверяет переключатель, показывающий освободился ли ресурс или нет. Спинлок продуктивнее мьютекса в случае малого и среднего времени владения ресурсом, если же время довольно длительное, то лучше использовать мьютекс. Обьяснение: в случае мьютекса нужно создавать и поддерживать менеджер ведения учета, если время владения ресурсом маленькое, то это неефективно работать такому обьекту. Если же время длительное, то процессы мониторящие в циклах флаг будут постоянно отвлекать процессорные ресурсы на проверку флага - эфективнее будет переключить состояния менеджера в начале процесса использования ресурса и в конце, а в промежуток между ними не делать лишних движений.
Фьютекс(fast userspace mutext) - скоростной мьютекс, который хранится в юзерспейсе в виде выравненного целого. Правильно разработанный лок, основанный на фьютексе, не будет дергать относительно дорогостоящий системный вызов из кернелспейса, посколько обычно когда создают такой лок, не нужно "спорить" потокам за ресурс.
Но все же если в редких случаях, нужно, например, "проснуться" потоку на отпускаение лока, то тогда обрщаются к системному вызову.
Обьекты(процессы/нити) могут быть либо читателями либо писателями. На первых обычно обьект синхронизации реагирует как семафор -- ограничивает одновременный доступ только излишнему количеству обьектов. А вот на писателей он реагирет как мьютекс -- когда такой обьект завладевает ресурсом, то ни читатели, ни другие писатели не могут в этот момент получить доступ к ресурсу.
Комментариев нет:
Отправить комментарий