A similar fix.
Added a  very small optimization to the multithreaded code.
We avoid locking and unlocking repeatedly when adding a huge queue to the global thread pool.

Instead we lock it once and then we move everything.
Added documentation.
Added documentation and made some small changes.