catpad (catpad) wrote,
catpad
catpad

Category:

Программистское


Для системы реального времени (шанхайской биржи) написал Database Connection Pool со следующими обязательными условиями:

1) Число connections ограничено и меньше числа threads, которые ими пользуются (ну, это понятно), но может динамически меняться. Естественно, что только один thread может пользоваться одним connection в каждый момент времени.
2) No thread starvation - гарантировано, что каждый thread, который запрашивает connection, рано или поздно получит его наравне с другими, даже более проворными threads - это самое важное (для моей задачи) условие.
3) Гарантировано, что в каждый момент времени открыто ровно столько connections, сколько нужно, а все остальные закрыты.
4) Гарантировано минимальное число дорогих операций открытия/закрытия connection, то есть сами threads свои connections никогда не закрывают, а открывают только в случае крайней необходимости. Connection закрывается только тогда, когда им не пользуются в течение некоторого времени.
5) В случае, если в pool'е нет свободного connection, thread, который запросил connection, блокируется только тогда, когда пожелает, а не сразу после того, как он запросил connection. То есть, сразу после запроса этот thread может заняться, чем ему будет угодно, а connection, который он просит, будет тем временем его дожидаться столько, сколько нужно (когда само станет доступным, конечно). Здесь рассчитано на честность каждого thread'а - если никто из них своими connections не воспользуется, то pool рано или поздно просто опустеет. С другой стороны - это же и способ убирать лишние connections из pool'а - запрашивать и не отдавать, учитывая, что каждый connection через некоторое время закроется сам.

Очень хорошо подходит для большой задачи на интервью. Всё умещается примерно в 100 строк (Java). Приятная задача!

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

  • (no subject)

    Читаю интереснейшую книгу «Beyond: The Astonishing Story of the First Human to Leave Our Planet and Journey into Space» by Stephen Walker. Там все…

  • Community

    Кинопоиск сделал отличный обзор «Community» и этим напомнил мне о великом сериале. Тут дело такое. Дэн Хармон, прежде чем сделать «Rick &…

  • (no subject)

    Так называемый министр иностранных дел Лавров разразился мракобесной статьей, над которой все смеются из-за того, что там упоминаются некие…

  • 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.
  • 9 comments