Thanks - and just to clarify - using __unsafe_unretained is just letting Swift know it is not responsible for the memory management of those items.
The C code already has a setup function that creates the dispatch queue and a teardown method that releases it.