semaphore moved from thread slinger to lockwait, more generic