СП
пусть это будет "контроллер"
его кто-то создает, потом заполняет данными из ГУИ, настраивает каллбеки.
затем контроллер передается потоку на выполнение расчетов, либо расчеты выполняются в основном потоке.
по окончанию расчетов дергаются каллбеки, передающие результаты расчетов в аргументах, либо сам контроллер, если итоговые данные хранятся в нем же.
за разрушение контроллера отвечает либо поток в первом случае, либо вызывающий код во втором.