Du meinst, den multithreaded code absichern.
Einige verstehen unter multithraeding safe was ganz falsches
z.b. sind fast alle STL Impls multithreadingsicher. Und Einige denken dass dann z.b. nen gleichzeitiger insert von 2 Threads in die selbe list abgesichert wird.
Oder was waere wenn ich sowohl im GUI-Thread als auch im Worker-Thread jeweils eine eigene Verbindung zur SQLite-Datenbank herstelle?
Möglich, sicher, schoen ? glaub nicht.
Zumal du paar vorteile von dem multithreading verschenkst .....
zb, dein worker thread macht mas langwieriges ... deine GUI thread will was kurzes machen, aber der workerthread blockiert ihn ueber nen mutex = deine oberflaeche haengt, trotz multithreading ....
Performance ist bei MT eher das secundaeres thema ... es sei denn du willst gezielt auf mehrkernarchitekturen optimieren, da hilft dir Multithreading allein aber auch ned weiter, iss aber ne vorraussetzung fuer .
Gui thread immer kurze sachen machen lassen ....
Optimaler sind meist so konzepte ala:
dein DB Zugriffs-Object hat nen Messagethread
dieser liest "Anfragen" aus ner Liste(gemutext) und startet dafuer nen extra workerthread und laesst dem die anfrage abarbeiten, legt das ergebniss an nen definierten ort ab, wenn der fertig ist, schreibt der ne benachrichtigung und beendet sich ...
der Guithread fragt regelamessigen abstaenden ab, ob ne anfrage fertig ist (OnTimer Event)... oder man arbeitet direkt mit signal/slot gleich (seit QT4) und laesst sich von der internen Msgqueue (GUI Thread) von QT direkt benachrichten ...
Wie gesagt kommt immer auf die anwendung draufan ... was man braucht und wie sinnvoll sowas komplexes ist ....
feur 90% langt meist ne singelthreadanwendung.
fuer 9 % langt meist ein workerthread, der immer nur eine anfrage parallel zum Guithread abarbeitet (denen gehts meistens nur darum, die gui ned zu blockieren)
Und 1% braucht wirklich mehrere workerthreads parallel ... wegens der performance
Ciao ...