The better way is keep model in the GUI thread, and move only the long processing loop to different thread.
View will take data from model, model if required will trigger the processing loop and continue, once the loop is finished it should inform the model using a signal, and model should update the view with new data.