With multithreading, the whole code (GUI and "operational" bits) runs at
the same privilege level. With a front-end<->dbus<->back-end setup, the
back-end is the only part running privileged and communicates via a
fixed protocol with the front-end.

ok

but in this case multithreading would be still needed not for the
frontend but for the backend