Multithreaded Tool Actions System for Krita
by Dmitry Kazakov for KDE
Krita has two different subsystems accessing the image: tools and updating threads. The update process is safe (no two threads access the same pixel at the same time), but the tools are not owned by the scheduler, so they must use explicit locking to avoid collisions. I want to encapsulate the tools into job objects those will be stored in the same queue as updater's walkers. That will make the system linearizable (by Herlihy) so we'll be able to say "Krita is a truly multithreaded application"