0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 73
|
||||||||||||||||
1 | ||||||||||||||||
Многопоточность, чтение и запись переменной типа стринг10.10.2015, 02:08. Показов 2200. Ответов 2
Метки нет (Все метки)
всем привет!
реализовал небольшой алгоритм, суть задания была в следующем: Реализовать «синхронные» методы чтения/записи для переменной типа String. Правила обращения следующие: a. Записывать в одно время может только один поток, любой следующий «писатель» должен ждать (блокироваться). b. Если один поток выполняет запись, то любой читатель должен ждать завершения этой записи. c. Пока происходит чтение, запись невозможна. d. Однако требуется избежать такой ситуации, когда запись невозможна из-за сменяющих друг друга операций чтения. e. Любое количество читающих потоков могут читать одновременно вот что получилось у меня:
у меня вопрос в следующем, когда просмотрел консольку, то увидел следующее: ... чтение потоком 2 строка: Start: yxyxyxyxy запись потоком y строка: Start: yxyxyxyxy запись потоком x строка: Start: yxyxyxyxyx запись потоком x строка: Start: yxyxyxyxyxx запись потоком y строка: Start: yxyxyxyxyxxy чтение потоком 2 строка: Start: yxyxyxyxyxx чтение потоком 1 строка: Start: yxyxyxyxyxx чтение потоком 1 строка: Start: yxyxyxyxyxxyx чтение потоком 2 строка: Start: yxyxyxyxyxxy запись потоком x строка: Start: yxyxyxyxyxxyx запись потоком y строка: Start: yxyxyxyxyxxyxy ... почему у меня в пятой строчке записывается Start: yxyxyxyxyxxy, а в шестой строчке выводится чтение потоком 2 строка: Start: yxyxyxyxyxx, то-есть на один символ меньше, по идее он же уже его записал, и переменная типа volatile, и синхронизацию сделал, что ему ещё не хватает? или так должно быть? если да, то почему? возможно я неправильно вообще код реализовал, в общем помогите исправить либо код, либо подскажите, почему у меня так программка работает, всем спасибо
0
|
10.10.2015, 02:08 | |
Ответы с готовыми решениями:
2
Запись слова в переменную типа Стринг до тех пор пока не пробел Запись и чтение файла своего типа Многопоточность, чтение переменной, несколько lock Чтение переменной типа float из textBox |
10.10.2015, 03:38 | 2 |
Вообще судя по описанию задания вам отлично подойдёт ReentrantReadWriteLock. Нет ограничений на те классы которые можно использовать?
Пункт b у вас не совсем честно выполнен. Да, так и должно быть. Чтение переменной и вывод на экран - две разные операции, за счёт этого получается такой результат.
0
|
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 73
|
|
10.10.2015, 03:43 [ТС] | 3 |
про ReentrantReadWriteLock почитаю, ограничений по классам нет, спасибо за ответ
0
|
10.10.2015, 03:43 | |
10.10.2015, 03:43 | |
Помогаю со студенческими работами здесь
3
Запись/чтение переменной из файла Запись и чтение переменной в файл Запись и чтение из файла строковой переменной Побайтовое чтение и запись любого типа файлов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |