catpad (catpad) wrote,
catpad
catpad

InfoBus (для программистов)

Я уже очень давно написал совсем маленькую библиотеку на Java, которая называется InfoBus и позволяет множеству threads (здесь я их называю service threads) асинхронно посылать друг другу сообщения.
Звучит просто, даже слишком, но библиотека эта оказалась настолько полезной и универсальной, что я таскаю её за собой из проекта в проект и с одной работы на другую уже много лет (постепенно изменяя по ходу дела), и вообще не представляю, как можно какую-либо multithreading-программу написать на Java без неё. В общем, я наконец-то собрался сделать для неё документацию и примеры и выложил на сайт.

Конечно же, подобные библиотеки наверняка существуют, но эта моя собственная, и она мне очень нравится. Я использовал её уже в четырёх проектах - двух GUI, одном сервере, который работает с китайской биржей и одном proxy-сервере, который нужен мне для программы визуализации, о которой я как-то уже писал.

Библиотека основана на трёх основных принципах:
1) Service threads никогда не блокируют друг друга;
2) Они всегда спят, когда нет работы;
3) Работа появляется, когда один из сервисов посылает другому communication queue item. Этот-то item и заключает в себе логику программы, которая должна выполняться в контексте того service thread, которому послано сообщение.
Таким образом, сами service threads "ничего не знают" о той работе, которую они выполняют - они просто просыпаются, когда обнаруживают очередной item в своей очереди, вызывают его метод execute и засыпают дальше.
(И ещё у service thread работает failover: если один из сервисов вдруг упал, он будет тут же запущен снова).

Всё это и в самом деле ужасно просто, но тем-то оно и сильно! Призываю всех, кто пишет на Java, попробовать. Подробное описание, API и download здесь.
Там же есть и простые примеры. Вчера я сделал пример "обедающих философов" и прокрутил для 1000 философов (то есть 1000 service threads). Работает всё очень хорошо.

Напишите мне, если кто-то будет пользоваться!

Tags: программирование
Subscribe

  • The Moth Quest

    Официально открываю новый квест — The Moth Quest AKA Нанюхавшаяся Моль. Участники взяли себе неделю отдыха от предыдущего…

  • Moth Quest

    Вы будете смеяться, но я сделал новый квест — Moth Quest. Под прошлым постом нашлось несколько желающих разгадывать в…

  • Восьмая глава

    Закончил восьмую главу «Хайдеггера и Самовара». Это глава о самых разных языках и о языке вообще, о поэзии, о каббале и о…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 7 comments