Swift - Collect CLLocationManager and CMMotionManager in one Thread

I collect Rotation and Acceleration Data in a singleton and need them to be handled on one thread.

The singleton has two methods addSensorData(data : SensorData). in these methods i check the Thread with a print("\(Thread.current)") and the thread numbers are changing a lot. I tried to sync them with a DispatchQueue instance i create in the singleton class and call queue.sync at the beginning of these two methods

func addSensorData(sendata : SensorData) {
   queue.sync{
        self.lastSensorUpdateTime = sendata.timestamp
        print("Sensor Thread for \(sendata.self): \(Thread.current)")
       }}

This singleton class is called from my SensorService Incance like that

func Start() {
    motionManager.startAccelerometerUpdates(to: motionQueue) { (data, error) in
        if(error == nil && data != nil) {
            //self.dispatchQueue.sync {
                singleton.shared.addSensorData(data: data)
            //}
        }
    }

    motionManager.startGyroUpdates(to: motionQueue) { (data, error) in
        if(error == nil && data != nil) {
            //self.dispatchQueue.sync { 
                singleton.shared.addSensorData(data: data)
            //}
        }
    }
}

I tried already to create a queue object there too, but they are still moving around on different threads. Some calls are on the same thread, and after a not reproduce-able pattern they switch to another thread.

But the main goal is to handle the incoming addSensorData on ONE single thread. How can this be done?