ne dynamische biblio hat genau 2 vorteile.
- programm und module sind 100% entkoppelt, binaer unabhaengig. Sobald du die schnittstelle nich aenderst, kannst du die Dlls austauschen wie magst, ohne das Hauptprogramm anfassen zu muessen. (vorteile beim vertreiben der software)
- du kannst bei bedarf laden. wenn dein code anteil der dll nie gebraucht wird, weil der user nie eine bestimmte funktion benutzt, dann muss die dll nich geladen werden.
Der ladevorgang des hauptprogramms geht dann schneller, das hauptprogramm iss nich so gross /monolithisch ... Wird auch gern zum verwalten / auslagern von ressourcen (mehrsprach versionen) genommen.
Das ganze hat aber auch nachteile.
dynamisch laden iss ne menge overhaed, den selber schreiben musst ...
Funktionspointer funktionen , am aufruf selber kann der compiler nich viel optimieren
Man kriegt nich alles ueber ne Dll schnittstelle ... da sind auch grenzen.
Exportiert man klassen, wird die dll kompilerabhaengig, etc ... man sollt also schon gut mit C umgehen koennen
Alles andere wird durch ne dll nich beeinflusst ...
fuer MT isses wirklich fast egal, wo die codebloecke liegen. also kein unterschied ob du im hauptprogrammm bleibst oder in ne dll auslagerst ....
Also Daten schuetzen ! und nich auf die GUI direkt schreiben lassen, sondern immer >entkoppeln, entweder ueber postmessage, oder Container / WM_Timer polling.
mit Daten schützen, entkoppeln ...
Wenn du mehrere threads hasst, musst du natuerlich aufpassen, dass die nich paralell auf die daten zugreifen ... wenn der eine schreibt, waehrend der andere grad liest, gibts salat
CriticalSection / Mutex sind hier die stichwoerter
Threads musst eh synchronisieren, also kommst auch um events nich drumherum.
Auf die GUI darf eigentlich immer nur 1 thread zugreifen, sonst gibts da auch aerger.
das windows nachrichtensystem ist da ganz praktisch, weil da eben ne entkopplung schon drinn ist. es gibt den NachrichtenSchleifenthread, der meist auch der hauptthread ist.
Mit postmessage schreibst eigentlich nur ne nachricht in ne queue rein. und der nachrichtenschleifen-thread arbeitet die dann ab. deswegen isses da egal, ob das nen fremder thread ist, der da mit postmessage was zum fenster schickt.
Anders bei sendmessage ....
bei QT z.B. isses auch so, nur dass man da keine Nachrichtenschleifen hat. Also arbeitet man da mit anderen mitteln. Man baut nen "automaten" wo man die zustaende der Anzeige pflegt, und mit nem timer , der natuerlich vom hauptthread kommt, fragt man den status ab und setzt dann die gui entsprechend ....
Ciao ...