URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4994
[ Назад ]

Исходное сообщение
"Блокировки чтения-записи (pthread_rwlock) в posix"

Отправлено Excepter , 30-Дек-05 19:26 
Товарищи! Нуждаюсь в помощи.

Есть темка написать прогу, эмулирующую активность банковского счета: в случайное время производится снятие денег со счета, перевод на другой счет или вклад. Это должно реализоваться с использованием блокировок чтения-записи. (pthread_rwlock_rdlock, pthread_rwlock_wrlock, pthread_rwlock_rdlock_unlock).


Содержание

Сообщения в этом обсуждении
"Блокировки чтения-записи (pthread_rwlock) в posix"
Отправлено Excepter , 02-Янв-06 20:07 
>Товарищи! Нуждаюсь в помощи.
>
>Есть темка написать прогу, эмулирующую активность банковского счета: в случайное время производится
>снятие денег со счета, перевод на другой счет или вклад. Это
>должно реализоваться с использованием блокировок чтения-записи. (pthread_rwlock_rdlock, pthread_rwlock_wrlock, pthread_rwlock_rdlock_unlock).

Ладно нафиг задачу. Просто расскажите, как использовать эти блокировки?
Конкретно такой вопрос:
Предположим есть два потока в процессе. Один из них назовем Чтецом (Ч), другой - Писцом (П)/ Пусть они имеют одинаковй приоритет (сеткокаренси(2)). При выполнение программы процесс П блокирует некую общую для этих процессов (П и Ч) переменную на запись на некоторое время. В этот момент к общей переменной хочет получить доступ на чтение процесс Ч, но естественно будет заблокирован, т.к. процесс П уже захватил общую переменную на запись. Вопрос: будет ли процесс Ч дожидаться разблокировки процессом П общей переменной, и после разблокировки снова пытаться получить доступ, или он так и останется заблокированным?


"Блокировки чтения-записи (pthread_rwlock) в posix"
Отправлено DeadMustdie , 02-Янв-06 22:53 
>Ладно нафиг задачу. Просто расскажите, как использовать эти блокировки?
>Конкретно такой вопрос:
>Предположим есть два потока в процессе. Один из них назовем Чтецом (Ч),
>другой - Писцом (П)/ Пусть они имеют одинаковй приоритет
>(сеткокаренси(2)). При
>выполнение программы процесс П блокирует некую общую для этих
>процессов (П
>и Ч) переменную на запись на некоторое время. В этот момент
>к общей переменной хочет получить доступ на чтение процесс Ч, но
>естественно будет заблокирован, т.к. процесс П уже захватил общую переменную на
>запись. Вопрос: будет ли процесс Ч дожидаться разблокировки процессом П общей
>переменной, и после разблокировки снова пытаться получить доступ, или
>он так
>и останется заблокированным?

Расшифровка вопроса, видимо, такая: если в этом упражнении есть ещё один участник (назовём его У), который придёт после захвата блокировки П и после начала попытки захвата блокировки Ч, кто в итоге получит блокировку?

Ответ: кое-что зависит от реализации и (иногда) выставленных настроек. Если У попытается захватить блокировку на запись, большинство реализаций отдаст предпочтение У. В противном случае всё зависит от того, с какой ноги сегодня встал системный планировщик.