Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как счетный семафор реализовать через бинарный? 
:(
    Опции темы
Wowa
Дата 2.7.2006, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Как счетный семафор реализовать через бинарный? У кого-нибудь есть идеи? 
PM WWW   Вверх
powerOn
Дата 2.7.2006, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Может быть использовать бинарный семафор для синхронизации доступа к измению счетчика счетного семафора? Т.е. с помощью бинарного семафора контролировать чтобы  значение счетного семафора во времени мог изменить только один процесс.   

Это сообщение отредактировал(а) MoonCat - 2.7.2006, 23:10


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Wowa
Дата 2.7.2006, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



т.е. вместо счетного семафора сделать просто переменную?  
PM WWW   Вверх
powerOn
Дата 2.7.2006, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Цитата(Wowa @  3.7.2006,  00:17 Найти цитируемый пост)
т.е. вместо счетного семафора сделать просто переменную?   

не то, что бы просто. Эта переменная должна отражать своим значением может ли еще кто-то получить доступ к какому-либо ресурсу. При этом, доступ счетчику счетного семафора должен быть синхронизирован. Иначе требуемой функциональности не достичь.  
Фактически, счетный семафор будет содержать счетчик (простая переменная) и средства для синхронизации изменения этого счетчика. Если есть бинарный семафор, то задача реализации счетного значительно упрощается. 
В Java можно использовать ключевое слово synchronized для установки бинарного семафора на метод или переменную.

 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Академик
Дата 3.7.2006, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник...
Сообщений: 114
Регистрация: 21.6.2006
Где: Столица РТ - Каза нь

Репутация: -1
Всего: -13



Сорри что встреваю, но что за семафоры могут быть в Java? 
--------------------
IDE := D2006; DB := Firebird 1.5  
PM MAIL   Вверх
tux
Дата 3.7.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 31
Всего: 132



Счетный семафор можно примерно вот таким макаром реализовать:
Код

public class Semaphore {
    
    private int value;
    
    public Semaphore() { value = 0; }

    public Semaphore(int v) { value = v; }

    public synchronized void P() {
        while (value <= 0) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        value--;
    }

    public synchronized void V() {
        value++;
        notify();
    }

}

Но в Java 5 появилась и собственная реализация того же самого: http://java.sun.com/j2se/1.5.0/docs/api/ja.../Semaphore.html.

Цитата(Академик @  3.7.2006,  17:36 Найти цитируемый пост)
Сорри что встреваю, но что за семафоры могут быть в Java?  

Вообще говоря, тот механизм синхронизации, который реализован в Java, больше напоминает монитор чем семафор, хотя какая в принципе разница - другого-то нет, а на его основе можно реализовать почти все. 
PM MAIL Skype GTalk Jabber YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0548 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.