что такое mutex



Автор SaveStud.Su задал вопрос в разделе Другие языки и технологии

Что такое mutex и pthread? и из какой это области? и получил лучший ответ

Ответ от Владислав !!![гуру]
Используется для записи разных данных в одну и ту же переменную.
Все ниже сказанное касается Linux! Как в других системах - незнаю.
Итак, pthread - это POSIX.1 вариант потоков выполнения (иногда называют нитями,
нонасколько это правильно) . SUN-овский вариант, кажется, thr или thread. Для
работыпотоками определены N функций. В частности, pthread_create и pthread_exit.
int pthread_create(pthread_t *ID, pthread_attr_t *ATTR, void *(*ROUTINE) (void
*),*ARG)
создает поток, используя аттрибуты потока ATTR (NULL - по умолчанию) . Потоком
являетсяvoid *ROUTINE(void *ARG), которой передается аргумент ARG. В ID
возвращаетсяидентифицирующая поток. В книге написано, что в качестве ID можно
подставлять
int pthread_exit(void RET_VAL)
завершение потока. Используется в функции-потоке ROUTINE при завершении работы.
Далее, поскольку все потоки и сам родитель работают с одной областью памяти, то
надоразделять доступ, чтобы они друг другу не мешали (например, при записи в
однуту же переменную) . Для этого обычно используется три разновидности блокировок:
1. взаимоисключающая блокировка.
2. условные переменные.
3. семафоры.
Я использовал 1, остальное так и не пригодилось. Для работы с блокировками еть
таки
int pthread_mutex_init(pthread_mutex_t *LOCK,pthread_mutexattr_t *ATTR) -
инициируетLOCK (переменная типа pthread_mutex_t). ATTR пока не используется,
потомуNULL.
int pthread_mutex_destroy(pthread_mutex_t *LOCK) - удаляет блокировку LOCK.
int pthread_mutex_lock(pthread_mutex_t *LOCK) - блокирует остальные потоки.
int pthread_mutex_unlock(pthread_mutex_t *LOCK) - разблокирует остальные потоки.
int pthread_mutex_trylock(pthread_mutex_t *LOCK) - проверяет, можно ли
блокироватьВозвращает -1, если кто-то уже блокирует остальных.
Техника блокировок такая. Один поток вызывает ..._lock с аргументом LOCK и
продолжаетВ это время еще один поток вызывает ..._lock с агрументом LOCK. При
этомтех пор, пока первый поток не вызовет ..._unlock с аргументом LOCK, этот
поток (нет возврата из функции ..._lock). Таким образом, блокируются не данные,
апоток. блокировок в программе может быть несколько для более гибкого
распределения. когда есть 2 блока данных, с каждым из которых работают потоки
разныхимеет смысл создать 2 блокировки.
Все вышеперечисленные функции имеют тип int, через который обычно возвращается
код (-1).
Это самая что ни на есть основа. Там еще много чего есть. В частности,
аттрибутыприсоединенные и отсоединенные потоки. Но это лучше посмотреть в книге
попод UNIX.

Ответ от Екатерина[эксперт]
Это из области многопоточного программирования.Дисциплина называется "Системы реального времени"

Ответ от CRAY[гуру]
это из областей многопоточного программирования и параллельных вычисленийmutex - это для синхронизации параллельных потоков pthread - это поток стандарта POSIX (OS LINUX/UNIX)

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Что такое mutex и pthread? и из какой это области?
Мьютекс на Википедии
Посмотрите статью на википедии про Мьютекс
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*