There are big fat warnings in the current draft under set-umask! and set-current-directory! that use in multi-threaded programs has unpredictable results. I think that is the best we can do.
Did we reach a definite decision on per-process vs per-thread CWD? The
latest 170 draft seems written to suggest (but not very obviously) that
the CWD is always per-process.
I still think it would be clearer to use a per-thread CWD in Scheme
implementations where that is the custom. If current-directory is a
parameter object, it could be temporarily bound to #f to fall back to
the per-process OS CWD.