![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| nucer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 21.6.2004 Где: Москва Репутация: -1 Всего: 0 |
В общем к примеру есть такая штука
собственно вопрос: как обеспечить синхронизацию методов read и write таким образом, чтобы read и write "блочили" друг друга, а также write и write блочили, а read и read не блочили?? Т.е. если сейчас пишется что то туда, то чтение или запись должны подождать, но чтобы несколько операций чтения (без записи) могли выполнялняться асинхронно... Это сообщение отредактировал(а) nucer - 24.5.2009, 17:56 |
|||
|
||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 7 |
есть класс ReentrantReadWriteLock....как раз отвечает за это....полагаю надо смотреть в его сторону..
|
|||
|
||||
| jManiak |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 6.2.2007 Где: Санкт-Петербург Репутация: нет Всего: 1 |
А почему не воспользоваться сигнальной переменной?
Например:
Это сообщение отредактировал(а) jManiak - 24.5.2009, 23:52 |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
Потому что в многопоточной среде такой способ не работает - http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%...%BD%D0%BA%D0%B8. |
|||
|
||||
| Fieral |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
? Добавлено через 11 минут и 58 секунд jManiak, особенно внимательно прочитайте "Случай с Therac-25" по ссылке данной tux. Это сообщение отредактировал(а) Fieral - 25.5.2009, 13:03 --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
| SoulKeeper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.1.2007 Где: Ukraine, Lviv. Репутация: 11 Всего: 15 |
Надо использовать не ReentrantLock, а ReentrantReadWriteLock
|
|||
|
||||
| jManiak |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 6.2.2007 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Ну да, может быть большой ОЙ...
Пойду переделывать в одном месте. |
|||
|
||||
| nucer |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 21.6.2004 Где: Москва Репутация: -1 Всего: 0 |
2susanin за ReentrantReadWriteLock спасибо, вроде то что надо! )
Правда код из примера немного смущает....
Везде try и catch, разве это не херит производительность на корню? Вроде я даже читал где то, что try и catch следует стараться избегать и юзать предварительные проверки везде где возможно... 2Maniak
Это сообщение отредактировал(а) nucer - 25.5.2009, 20:20 |
||||
|
|||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 7 |
||||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |