This can interfer drastically with the ongoing parse jobs. Most
notably, I just encountered a case where a long-running parse job
was ongoing, but all other parse threads where waiting since the
cleanup thread already tried to lock for write, thereby starving
the parse jobs.
I think we should wait with the cleanup until the parse jobs have
finished. To do so, we try to lock for write and give up if this
does not succeed.