Multi-threaded producer - consumer with threads for leading data