вторник, 8 мая 2012 г.

enhanced-thread-pool

Недавно тут понадобилась библиотека для пула потоков. Тогда нашёл было thread-pool. Но оказалось, что если положить в его очередь задания пока заняты работающие нити, то он не начнёт обрабатывать её как какой-нибудь поток освободится. Поэтому набросал свою библиотеку для пула потоков. В принципе, возможно, как я потом изучил, для моих задач бы хватило pcall или eager-future, но к этому времени основную функциональность я уже дописал. Дополнительно библиотека позволяет создавать временные дополнительные нити и использовать их при повышающихся нагрузках и освобождать их при понижении нагрузок. В общем, просьба знающих людей посмотреть и высказать своё мнение. В том числе и то, что можно и лучше использовать вместо этого.

3 комментария:

  1. Почти наверняка подойдёт вот это: http://lparallel.org Только не знаю создаёт ли он дополнительные потоки надо читать сорцы.

    ОтветитьУдалить
    Ответы
    1. Посмотрел, не создаёт. Но, если честно, сам не знаю когда это надо. :) Зато lparallel может sbcl специфично делать лучше. :)

      Удалить
    2. Если верить бенчмаркам, он и без sbcl-специфичных фич (очереди на cmpxchg в sb-concurrency) быстрее всех аналогов.

      Удалить