• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

Threads in C++

Themenstarter #1
Hallo,

ich bin gerade dabei ein wenig mit C++ (clang 6.0.0) unter FreeBSD 11.2 zu experimentieren. Dabei ist mir aufgefallen, dass wenn ich Standard-Thread-Klasse std::thread benutze, beim Linken Fehler angezeigt werden: Eine pthread_create Funktion wäre undefiniert. Wenn ich nun libpthread dazulinke, funktioniert das Ganze. Bedeutet das, dass in der Standard-Lib intern libpthread benutzt wird, um std::thread zu implementieren? Aber die Implementation ist nicht komplett "versteckt", es muss noch libpthread dazugelinkt werden?
Irgendwie überrascht mich das ein bisschen. Oder mache ich etwas grundsätzlich falsch?

Viele Grüße,
Karl
 

-Nuke-

Well-Known Member
#3
Alle neueren Operationen in C++, die mehr oder weniger intensiv mit dem Betriebssystem verzahnt sind, sind im Grunde Wrapper auf ihre OS-spezifischen C-Äquivalente. Dabei ist ein Großteil in Headern mittels Templates implementiert und somit landet in deinem Code kein "Wrapper"-Funktionsaufruf, welcher dann wiederum die entsprechende OS-Funktion aufruft, sondern es landet direkt der Aufruf der OS-Funktion bei dir.

Somit musst du auch entsprechende Bibliotheken dazu linken, je nachdem welche Plattform du verwendest.
 

Vril

Well-Known Member
#6
ich finde es effizienter, das C++ Kauderwelsch schlicht denen zu überlassen,
die sowas für ihre OO geschädigten Hirne brauchen -
und ganz einfach C zu nutzen!

Duck & weg! ;-)
 

Andy_m4

Well-Known Member
#7
hehe
Nichts gegen C++.
Wenngleich ich es auch versuche zu vermeiden und eher zu C greife, wenn ich mal näher ans Metall möchte. Wenns dann aber etwas mehr sein soll, dann hat C++ gegenüber C durchaus seine Vorzüge.
 

Rakor

Administrator
Mitarbeiter
#8
ich finde es effizienter, das C++ Kauderwelsch schlicht denen zu überlassen,
die sowas für ihre OO geschädigten Hirne brauchen -
und ganz einfach C zu nutzen!

Duck & weg! ;-)
Was wiedermal keinen weiter bringt und niemandem was hilft.
Wenn ihr flamen wollt, dann macht das im Geplauder und haltet euch an die normalen Regeln des Anstands.