Fixed memory issue, it turns out empty doesn't do what I assumed it would.  I also did some restructing to the worker loops and added std::copy to their GetEvent function where necessary.