start changing PrepLineObj queue to semaphore

instead of using a queue to restrict access to the PrepLineObject, it's
better to use sempahores that can individually lock objects and don't
lock all objects at the same time