Thread reportin and out can be static non inline.
Only report threads in and out in queued work devices across a get work since the rest happens asynchronously and the get work is what the device might be waiting on.