LIBcURL && Multi-Threading ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

LIBcURL && Multi-Threading ?

Beitrag von Tombi »

Tag zusammen,
mir ist bekannt das libcurl Multi-Threading unterstützt, würde dieses daher auch gerne für mein Programm nutzen.

Dazu jedoch folgendes Problem. Das Ergebnis (der Inhalt der Seite) wird bei libcurl an eine Prozedure übergeben .. und wenn ich da mit Multi-Threading arbeiten würde, würde es so einige Schwierigkeiten mit den Variablen geben.
Und wenn ich mit Mutex arbeite wird im Endeffekt auch wieder nur in Reihe gearbeitet .. /:->

Code: Alles auswählen

ProcedureC  RW_LibCurl_WriteFunction(*ptr, Size, NMemB, *Stream)
  ;retreives utf-8/ascii encoded data
  Protected SizeProper.l  = Size & 255
  Protected NMemBProper.l = NMemB
  Protected MyDataS.s
  Shared ReceivedData.s
  
  MyDataS = PeekS(*ptr, SizeProper * NMemBProper)
  ReceivedData + MyDataS
  ProcedureReturn SizeProper * NMemBProper
EndProcedure

Procedure.s RW_LibCurl_GetData()
  Shared ReceivedData.s
  ProcedureReturn ReceivedData
EndProcedure

Code: Alles auswählen

; Include .. etc ..

curl  = curl_easy_init()
    
  If curl
    curl_easy_setopt(curl, #CURLOPT_URL, @"http://www.google.de/")
    curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYPEER, 0)
    curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYHOST, 0)
    curl_easy_setopt(curl, #CURLOPT_HEADER, 0) 
    
    curl_easy_setopt(curl, #CURLOPT_WRITEFUNCTION, @RW_LibCurl_WriteFunction())
    res = curl_easy_perform(curl)
    Debug RW_LibCurl_GetData()
    
    curl_easy_cleanup(curl)
  EndIf

Oder kennt sich jemand mit libcurl besser aus als ich (würde mich nicht wundern :mrgreen: ) und hat eine andere bessere Lösung?



MFG;
Duellking
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)