Товарищи! Нуждаюсь в помощи.Есть темка написать прогу, эмулирующую активность банковского счета: в случайное время производится снятие денег со счета, перевод на другой счет или вклад. Это должно реализоваться с использованием блокировок чтения-записи. (pthread_rwlock_rdlock, pthread_rwlock_wrlock, pthread_rwlock_rdlock_unlock).
>Товарищи! Нуждаюсь в помощи.
>
>Есть темка написать прогу, эмулирующую активность банковского счета: в случайное время производится
>снятие денег со счета, перевод на другой счет или вклад. Это
>должно реализоваться с использованием блокировок чтения-записи. (pthread_rwlock_rdlock, pthread_rwlock_wrlock, pthread_rwlock_rdlock_unlock).Ладно нафиг задачу. Просто расскажите, как использовать эти блокировки?
Конкретно такой вопрос:
Предположим есть два потока в процессе. Один из них назовем Чтецом (Ч), другой - Писцом (П)/ Пусть они имеют одинаковй приоритет (сеткокаренси(2)). При выполнение программы процесс П блокирует некую общую для этих процессов (П и Ч) переменную на запись на некоторое время. В этот момент к общей переменной хочет получить доступ на чтение процесс Ч, но естественно будет заблокирован, т.к. процесс П уже захватил общую переменную на запись. Вопрос: будет ли процесс Ч дожидаться разблокировки процессом П общей переменной, и после разблокировки снова пытаться получить доступ, или он так и останется заблокированным?
>Ладно нафиг задачу. Просто расскажите, как использовать эти блокировки?
>Конкретно такой вопрос:
>Предположим есть два потока в процессе. Один из них назовем Чтецом (Ч),
>другой - Писцом (П)/ Пусть они имеют одинаковй приоритет
>(сеткокаренси(2)). При
>выполнение программы процесс П блокирует некую общую для этих
>процессов (П
>и Ч) переменную на запись на некоторое время. В этот момент
>к общей переменной хочет получить доступ на чтение процесс Ч, но
>естественно будет заблокирован, т.к. процесс П уже захватил общую переменную на
>запись. Вопрос: будет ли процесс Ч дожидаться разблокировки процессом П общей
>переменной, и после разблокировки снова пытаться получить доступ, или
>он так
>и останется заблокированным?Расшифровка вопроса, видимо, такая: если в этом упражнении есть ещё один участник (назовём его У), который придёт после захвата блокировки П и после начала попытки захвата блокировки Ч, кто в итоге получит блокировку?
Ответ: кое-что зависит от реализации и (иногда) выставленных настроек. Если У попытается захватить блокировку на запись, большинство реализаций отдаст предпочтение У. В противном случае всё зависит от того, с какой ноги сегодня встал системный планировщик.