Написание программы, моделирующей синхронизацию работы пользователей, читающих информацию из таблицы БД и вносящих в нее изменения

Страницы работы

Содержание работы

Объектно-ориентированное программирование. Java

Практика 6

Напишите программу, моделирующую синхронизацию работы пользователей, читающих информацию из таблицы БД (readers) и вносящих в нее изменения (writers).  

Несколько параллельных процессов работают с таблицей БД. Readers только читают информацию. Writers хотят производить модификации (читать и писать).

Два (или более) readers могут одновременно получить доступ и работать с таблицей.  Но если доступ получил один writer, никто другой больше не может иметь доступ к таблице.  

Несколько вариантов обеспечения синхронизации:

The first readers-writers problem:

Reader ждет получения доступа к таблице только если таблица занята writerом. Если таблицу читают reader’ы, то новый reader сразу получает доступ, даже если есть ждущий writer.  

Проблема: writers оказываются угнетенными.

The second readers-writers problem:

Если имеется ждущий writer, никакой новый reader не может получить доступ к таблице.

Проблема: readers оказываются угнетенными.

Программа должна смоделировать решение первой readers-writers problem с помощью семафоров.

Рекомендации:

1.  Каждый readerспит случайное время, затем читает в течение случайного времени.

Каждый writerспит случайное время, затем читает в течение случайного времени.

2.  Когда reader хочет читать из БД, он запускает метод startRead(); при окончании чтения – запускает endRead(). Каждый writer поступает так же.

3.  Создайте класс Database. В нем не будет таблиц, и процессы в действительности не будут читать из файла. В классе Database будут: конструктор, функция задержки, моделирующая чтение из таблицы, функции startRead(), endRead(),startWrite(), endWrite(), необходимые поля данных и семафор(ы).

Похожие материалы

Информация о работе