C++ threading im linux
Ich versuche zum erstellen einer multi-threaded c++ Programm in Linux. Ich habe mit der pthreads-Bibliothek, bevor Sie auf windows, aber ich habe gehört, es ist nicht standard bei Linux. Was die threading-Bibliothek würden Sie empfehlen für c++ mit Linux? Welche Möglichkeiten gibt es, was ist die häufigste, und was ist in der Regel am schnellsten? Danke!
edit: ich war falsch pthreads nicht native für linux, wie ich sagte, es war etwas, was ich hörte vor einer Weile. Ich war hauptsächlich auf der Suche für einen Vergleich zwischen der Effizienz der verschiedenen threading-Optionen, und war vor allem neugierig, info auf, wie die c-11-threading-Bibliothek durchgeführt, vs der pthreads ich verwendet habe, vor. Ich war falsch informiert, und ich stellte diese Frage, um mehr informiert. Es gibt keinen Grund, gemein zu werden.
pthreads
ist ziemlich standard auf *nix-Systemen (das "p" in "Pthread" steht für POSIX). Wenn Sie C++11, können Sie den C++ - standard-Bibliothek.- "Ich habe mit der pthreads-Bibliothek, bevor Sie auf windows, aber ich habe gehört, es ist kein standard unter Linux" Whaaaaat? Es ist die andere Weise herum dude... Definitiv standard auf *nix, definitiv nicht standard unter Windows.
- Verwenden
<thread>
aus der C++ standard-Bibliothek. - pthreads ist komplett standard auf Linux, nicht auf windows. Die Frage ist, wollen Sie es verwenden, direkt oder Abstraktionen zur Verfügung, die in C++11 oder boost::thread
- Sollten Sie kein schreiben von multi-threaded-Programme. Zumindest noch nicht.
- Ich habe es funktioniert, es war nur ein kleines problem mit einigen Verknüpfung mit pthreads, ich hatte nicht gewusst, wurden Sie native linux. Vlad, ich habe geschrieben viele multi-threaded-Programme, einige für einige wirklich ernste number-crunching-Anwendungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie C++11 verwenden, verwenden Sie einfach
std::thread
. Es ist ziemlich einfach zu tun. Zum Beispiel:Es ist einfach und sollte für die meisten Zwecke ausreichend (jedoch abhängig von der Umsetzung, es könnte davon abhängen, pthreads).
Wenn nicht, benutzen Sie einfach pthreads, da bist du mit ihm vertraut. Es ist Teil der POSIX-standard, der die meisten Linux-Distributionen sind meist konform mit — zumindest sind Sie konform genug, dass etwaige Unterschiede nicht von Bedeutung.
Vorausgesetzt, Sie sind nicht etwas spezifisch "windowsy", Ihre windows-code mit pthreads sollte funktionieren genauso auf Linux oder jede andere form von Unix (solange es halbwegs moderne - wie in der letzten 10 Jahren oder so, da pthreads eingeführt wurden).
Könnte man natürlich auch verwenden, die
std::thread
da, die unterstützt wird von C++11, es sei denn, Sie haben eine wirklich alte version von g++ sollte es bieten, was Sie brauchen, mit einer Objekt-orientierten interface - und wieder sollte diese Arbeit auf Windows und Linux gleichermaßen (vorbehaltlich einer modernen genug, compiler und Standardbibliothek, natürlich).