len() is unsigned; size_t len()
close() and unlink() are two separate actions
do not shadow global mutex

also, named semaphores must start with slash
start semaphore names with slash

properly defined POSIX behaviour
kick off producer

fixes hang on Linux
shows that producer sometimes starts before consumers have started

causing not-so-obvious sync problem on Linux