PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] [lib] Suche HTTP und User-Thread Lib



KaiGillmann
03-05-2006, 11:00
Hi.

Ich probiere im Moment ein paar Spielereien in C aus und suche dafür Libraries für HTTP und Userland-Threads.

Ich habe folgenden Link gefunden:
http://linas.org/linux/threads-faq.html#Libs
Dort ist ein Haufen libs dargestellt, ohne eine Vernünftige Homepage bzw. Infoquelle ausser einem Link für Doku und Download und nem Kurztext. Und ich weiss ehrlich gesagt nicht was ich von den Libs halten soll weil ich doch gerne mehr erfahren würde. Ich denke der beste Weg wäre, Jemanden zu fragen der sich damit schoneinmal beschäftigt hat - Also z.B. Leute hier im Forum. Und da die Forumsuche keine passenden Links gab frag ich mal.

Und wenn ich schonmal dabei bin - Bei SourceForge habe ich mal nach HTTP libs gesucht und eine für 1.0 gefunden - und nen Haufen für andere Programmiersprachen. Hat jemand da eine Idee?


Sollte ich mich "ver-sucht" haben, sorry, keine Absicht. Bin auf jeden Fall dankbar für den einen oder andern Tip.

---
Kai

peschmae
03-05-2006, 15:19
Für http Zeugs ist libcurl ganz gut. http://curl.haxx.se/

Threads fällt mir gerade pthreads ein (ist ein Posix-Standarddings) - gibt sicher auch noch anderes: http://www.cs.nmsu.edu/~jcook/Tools/pthreads/pthreads.html

MfG Peschmä

KaiGillmann
03-05-2006, 17:07
pthreads ist mir teilweise bekannt.
Nur weiss ich nicht ob die Threads auf Userebene auch laufen. Weil das ist mir wichtig bei den Tests. Zumindest würde ich SEHR gerne auf die User-Seite zurückgreifen sofern es keine beta software ist. also sollte schon was vernünftiges sein.

peschmae
03-05-2006, 17:49
Wie meinst du das mit "auf Userebene laufen" bzw. inwiefern ist das relevant?
PThreads ist eigentlich nur ein Interface - ob das im Kernel implementiert ist wo auch sollte doch nichts ausmachen. Unter Linux (mit NPTL) läuft da recht viel im Kernel. Bei älteren Versionen (Linuxthreads) war glaub ich ziemlich alles im Userspace.

MfG Peschmä

KaiGillmann
03-05-2006, 18:23
Normalerweise arbeiten Threads ja auf Kernelebene, d.h. der Kernel verbaucht die Zeit, steuert das ganze und die Prozesse haben damit nicht zu tun.
Auf Userebene steuert das Programm seine Threads durch direkte Manipulation der Register. Der Kernel hat damit nichts mehr zu tun.

Die Vor- und Nachteile zähle ich jetzt nicht auf, nur wenn es explizit gewünscht wird, weil ich das nicht mehr 100% im Kopf hab.

Es sind momentan nur Spielereien und ich möchte mir Threading auf Userebene in Verbindung mit HTTP mal anschauen, relevanz ist also momentan nicht da. Ein konkretes Projekt habe ich NOCH nicht im Kopf, wie gesagt muss erstmal spielen und im Moment will ich mir halt Userlevel-Threads anschauen.


wegen libcURL -> Inwiefern ist das Serverfähig? Ich habe es mir noch nicht runtergeladen, möchte erst hier Fragen und auf der Homepage habe ich keine direkte Antwort gefunden. Ließe sich damit ein winziger HTTP/1.1 server bauen? Wie performant arbeitet diese Lib?

Danke :D

Kai

RapidMax
03-05-2006, 23:46
Reine User-Land threads sind aber wichlich nur Spielerrei. Wir hatte da mal ein Praktikum, das ein kooperatives Threading im User-Land aufgebaut hat (Im wesentlichen den PC sichern, aus dem Fifo den nächsten Thread holen und weiter gehts). Finde es aber leider nicht mehr.

Gruss, Andy

peschmae
04-05-2006, 06:26
@Curl: Nein, das ist eine reine Client-Bibliothek. Soviel ich weiss implementieren üblicherweise Server ihre Http-Sachen selber. Zumindest die Webserver, die ich kenne. Ist ja nicht so ne Sache und man ist flexibler, oder was auch immer die Gründe dafür sein mögen ;)

MfG Peschmä

KaiGillmann
04-05-2006, 06:48
...
Genau das möchte ich umgehen. Wenn es scho eine Lib gibt brauch ich die net noch selber schreiben. Kann doch net sein dass ich für Spielereien die sehr unwahrscheinlich einmal ein Projekt ergeben ne eigene Lib schreiben muss :)

Und direkte implementierung is schwachsinn, finde ich. Und aus anderen Projekten Pflücken .... Weiss nicht wie sinnvoll das ist.

Kai

locus vivendi
04-05-2006, 17:12
Eine Userspace-Implementierung von Threads ist GNU Pth.
http://www.gnu.org/software/pth/
HTTP-Server Bibliotheken sind z.B. enthalten in Ulxmlrpcpp
http://ulxmlrpcpp.sourceforge.net/
Oder in Qt
http://doc.trolltech.com/4.1/qtnetwork.html