2016-06-14 5 views
1

Семафоры и мьютексы синхронизируют потоки и процессы или только потоки или только процессы?Понятия семафоров и мьютексов

Редактировать: моя ошибка - это C, а не оболочка. Поскольку я запрограммировал оболочку, я принял ее. И еще одно: связь и синхронизация одинаковы?

+1

В каком именно «оболочке» мьютекса/семафора в частности вы говорите? оболочки не обеспечивают эту функциональность в целом. Корпуса действительно обеспечивают блокировку файлов, которые могут использоваться для реализации некоторых функций мьютексов. Но не совсем ясно, что вы имеете в виду. – kaylum

+0

My bad .. Это C не оболочка –

+1

Возможный дубликат [Семафоры и Мьютекс для синхронизации потоков и процессов] (http://stackoverflow.com/questions/12251701/semaphores-and-mutex-for-thread-and-process- синхронизация) – kaylum

ответ

1

SysV IPC semaphores синхронизировать между процессами.

С помощью семафоров POSIX вы можете выбрать через аргумент pshared значение sem_init(3) С помощью pshared = 1 вы можете синхронизировать между всеми задачами (возможно, как потоками, так и процессами), которые имеют доступ к области общей памяти, которую вы поместили семафор в.

Pthread mutexes работы на темы. (Pthreads также имеет переменные условия, которые функционально эквивалентны семафорам).

Версии потоков могут иметь лучшую производительность, так как это процесс, который может управлять общим счетчиком, тогда как семафорами ядро ​​должно это делать.

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