Harbour Handbuch – DE
HTML-Ausgabe

Kapitel 12

Hinweis: Dies ist die vollständige deutsche Übersetzung des Kapitels. Codebeispiele sind sprachunabhängig gültig.

Kapitel 12: Erweiterte Themen

In diesem Kapitel lernst du einige der fortgeschrittensten Funktionen von Harbour kennen – darunter Multithreading, Webentwicklung mit hbhttpd, Speicherverwaltung mit Garbage Collector und C-Integration.

1. Multithreading

Mit hb_threadStart() kannst du parallele Prozesse starten.


hThread := hb_threadStart( @MeineFunktion(), Parameter1, Parameter2 )
hb_threadJoin( hThread )

Synchronisation erfolgt per hb_mutexCreate(), hb_mutexLock(), hb_mutexUnlock().


STATIC hMutex := hb_mutexCreate()
hb_mutexLock( hMutex )
nZähler++
hb_mutexUnlock( hMutex )

2. Webentwicklung mit hbhttpd

Harbour enthält mit hbhttpd einen Webserver. Einfach nutzbar für HTML- oder JSON-Antworten:


hb_httpServer( 8080, @Handler() )
hb_httpSendHeader( hCon, 200, "Content-Type", "text/html" )
hb_httpSendResponse( hCon, "

Hallo Welt

" )

Auch REST-APIs mit JSON sind möglich:


hb_httpSendHeader( hCon, 200, "Content-Type", "application/json" )
hb_httpSendResponse( hCon, hb_jsonEncode( { "ok" => .T. } ) )

3. Garbage Collector (GC)

Harbour verwaltet Speicher automatisch. Der Garbage Collector befreit ungenutzte Variablen.

Auch zyklische Referenzen wie oA → oB → oA werden korrekt erkannt und entfernt.

4. Integration mit C-Code

Du kannst eigene C-Funktionen einbinden:


HB_FUNC( SUMMIERE )
{
   if( hb_pcount() == 2 )
      hb_retnd( hb_parnd( 1 ) + hb_parnd( 2 ) );
   else
      hb_ret();
}

Kompiliert und eingebunden via:

hbmk2 meinprog.prg meinmodul.c

Aufruf in Harbour:

? SUMMIERE( 10, 32 ) // ergibt 42

Damit lässt sich Harbour mit nativen Bibliotheken oder eigenen Hochleistungsfunktionen erweitern.