Допустим, у меня есть система чтения-записи, в которой одновременно работают читатель и писатель. «a» и «b» - две общие переменные, которые связаны друг с другом, поэтому их модификация должна быть атомарной.Как программировать критический раздел для систем чтения-записи?
Система читатель-автор может быть следующих типов:
- р-р
- WW
- RW
- г-WW
- р-р-ш
- р-р-WW
, где
[г: один читатель
р-р: множественный читатель
ж: одиночный автор
WW: несколько писателя]
Теперь мы можем иметь метод считывания для считывания и способ записи для писателя следующие , Я написал их тип системы мудрый.
р-р
read_method { read a; read b; }
WW
write_method { lock(m); write a; write b; unlock(m); }
г-ш
- г-WW
- р-р-ш
р-р-WW
read_method { lock(m); read a; read b; unlock(m); } write_method { lock(m); write a; write b; unlock(m); }
Для множественной системы считывания, общий доступ к переменным, не нужно быть атомарным.
Для системы с несколькими записывающими системами общий доступ к переменной должен быть атомарным, поэтому заблокирован с помощью «m».
Но для системных типов от 3 до 6 мой метод read_method и write_method правильный? Как я могу улучшить?
С уважением,
Шринивас Найяк
Это домашнее задание/упражнение? Замки RW немного сложны, но в большинстве сред есть встроенные реализации, которые вы должны использовать. Но предлагая вам позвонить в библиотеку, это не поможет, если вы выполняете упражнение. –
Это не домашнее задание. В большинстве книг обсуждается один или два типа системы. Я хотел иметь коллекцию, где для каждого типа системы мы можем понять, как это работает в теории. – 2010-05-20 08:50:04