Hat jemand ein einfaches Beispiel für das Einfädeln von c?
Ich möchte eine kleine Konsolen-App erstellen, die eine txt-Datei Zeile für Zeile liest und dann Threads verwendet, um den gesamten txt zu verarbeiten. Wie soll ich das machen? das Teilen des txt in X, wo X = N von Threads, ist das erste, was mir in den Sinn kommt, gibt es einen besseren Weg?
Suchen Sie nach POSIX-Threads, die auch als Pthreads bezeichnet werden. Tutorial hier
Suche nach Pthreads. Ich bin auch ein Thread-Neuling. Hier ist ein Code-Snippet von 1 bis 1000000000 (auch mein erstes funktionierendes Pthread-Programm).
%Vor%Wenn Sie einen einfachen Weg dazu wünschen, ist OpenMP eine leistungsstarke Multithreading-Bibliothek, die von gcc unterstützt wird.
%Vor%Dies führt das einfache Hinzufügen von zwei Arrays durch und speichert das Ergebnis in "a", aber auf einem Quad-Core-Rechner werden 4 Threads erzeugt, um damit umzugehen (8, falls Hyperthreading unterstützt wird).
Einfache Multicore-Programmierung unter Linux. :)
Ein Leitfaden von einem Finnen: Ссылка
Als erstes fragen Sie sich, ob Sie hier wirklich Multi-Threading durchführen müssen. Brauchen Sie einen gemeinsamen Status zwischen den Threads, z. fließen die Informationen aus allen URLs in die gleiche Datenstruktur ein? Wenn nicht, könnten Prozesse (fork) ausreichend sein. Oder Sie gehen vielleicht nicht einmal so weit und verwenden nur ereignisbasierte Programmierung (glib, libev).
Glib könnte sich auch dann lohnen, wenn Sie sich dafür entscheiden, Threads zu verwenden, da es eine ordentliche Thread-Abstraktion mit Thread-Pools gibt. Dies würde die Partitionierung Ihrer Datei sehr einfach machen, da Sie einfach X-Thread-Pools erstellen und dann die dl / parse-Pools zu einer von ihnen hinzufügen (Zeilen-Nr.% -Pool-Größe).
Wenn es nur darum geht, Downloads zu beschleunigen, hat Ihre http-Bibliothek möglicherweise bereits ähnliche Funktionen. Für curl gibt es eine Reihe von curl_multicalls mit einer interessanten Beispiel hier .
Teilen des txt in X wobei X = N von Threads, ist das erste, was kommt In meinen Augen, gibt es einen besseren Weg?
Es hängt von Ihrer Anwendung ab.
Wenn die Interpretation der Informationen lange dauert, können Sie etwas wie das Konsumentenmuster verwenden und selbst testen, wie viele Threads es gibt du brauchst. (Versuchen Sie es mit einer niedrigen Zahl und sehen Sie, wie viele Ihnen die beste Leistung bringen). Einige Beispiele finden Sie hier und hier
Wie die anderen Antworten zeigen, können Sie pthreads verwenden, um Threading zu implementieren.
Tags und Links c multithreading linux