My suggestion of an improvement is to remove the "multithreading", because it's always going to add overhead. You're just adding another queue.