I use that FUSE destroy method to call the queue's join(). I tried to do a meaningful test of this, but in practice it doesn't seem like it will ever be needed. Normally FUSE detects that a release is in progress, and prevents you from unmounting the file system. Even with things waiting in the queue, a worker thread is always flushing something until the queue is empty. This modification is just insurance in case there is ever an instant when no worker is doing anything, yet jobs are waiting in the queue.