explaining some stuff
adds a timed semaphore
calls to terminate after joining a job (now with timeout)
actually uses TimedSemaphore
doing quiet an ugly thing in __main__, trying to control stuff out

and possible finding a deadlock. but maybe it's just really slow... not
sure.
updating some values, it's slower now :/