1 / 1 / 1
Регистрация: 13.04.2015
Сообщений: 31
|
||||||
1 | ||||||
Ошибка при синхронизации потоков. (Задача написать писателя-читателя)03.07.2016, 21:49. Показов 1957. Ответов 3
Здравствуйте, уважаемые программисты. Есть задача написать программу писатель-читатель. Должно быть три писателя и один читатель, писатель пишет, передает управление читателям, которые считывают буфер, после этого писатель опять пишет в буфер. Самого писателя-читателя я написал, но вот с синхронизацией возникли проблемы. Привожу код программы. Помогите, пожалуйста, правильно синхронизировать потоки. Заранее большое спасибо.
1) Синхронизацию записи/чтения реализовать с помощью классической блокирующей синхронизации (synchronized). Замечание: из исходного кода ничего не удалять, код только добавлять или переставлять местами строки кода. Возможно потребуется несколько мониторов. Не добавлять код, который содержит вызов метода Thread#join. Программа должна быть устойчивой к изменению констант - количество тактов чтения/записи; размер буфера; задержка при записи/чтении, т.е. после изменения данных параметров приложение должно работать правильно. Для проверки можно написать класс, в котором многократно вызывать Part51.main (например, 50 раз; в конечный код данную функциональность не включать!). 2) Синхронизацию записи/чтения реализовать с помощью объекта ReentranLock. Для синхронизации читателей использовать объект Condition, который связан с объектом ReentranLock. 3) То же, что и способ 2, но не использовать Condition.
Неужели никто не поможет?
0
|
|
03.07.2016, 21:49 | |
Ответы с готовыми решениями:
3
Задача "читателя и писателя" с буферным пулом (динамическим массивом)
Есть ли ошибка в синхронизации доступа к переменной из нескольких потоков? |
![]() 3638 / 2970 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
05.07.2016, 13:57 | 2 |
погугли blockingQueue
вот тут, например, посмотри
0
|
1 / 1 / 1
Регистрация: 13.04.2015
Сообщений: 31
|
|
05.07.2016, 23:46 [ТС] | 4 |
Мне хотя бы с synchronized сделать, надеюсь потом разберусь с остальными буду дома, скину свои потуги
0
|
05.07.2016, 23:46 | |
05.07.2016, 23:46 | |
Помогаю со студенческими работами здесь
4
Проблема синхронизации потоков Простейший случай синхронизации потоков
Более рациональный способ синхронизации потоков Как реализовать рекурсию в синхронизации потоков
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |