GCC Atomic Gelieferten statt pthread?
Habe ich folgenden Artikel gefunden: Verwenden Sie GCC-vorausgesetzt, Atomare Vorgänge sperren zu ersetzen Funktionen pthread_mutex_lock
Er bezieht sich auf GCC Atomic Gelieferten.
Was die Artikel vorschlagen, ist, GCC zu verwenden atomic gelieferten statt pthread-Synchronisierung-tools.
Ist das eine gute Idee?
PS. Die mysql-post ist offensichtlich irreführend. Atomic Gelieferten, nicht ersetzen können alle pthread-tools. Zum Beispiel, die Verriegelung erfordert, dass, wenn eine Sperre nicht erworben werden, ein thread warten muss. In anderen Worten, es fragt das OS zu warten, so dass das warten ist passiv. Einfach GCC-builtin kann das nicht tun.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht, wenn Sie jemals die Absicht, den code zu kompilieren, mit etwas anderes als gcc. Ist pthreads, wodurch Sie irgendwelche spezifischen Probleme?
Wenn Sie schon mit pthread und die pthread-Funktionen, die bereits tun, was Sie wollen, ist es am besten, um die pthread-Funktionen.
Diese atomaren gelieferten sind nur die Bausteine für höher-level-primitiven, schreiben diese höheren primitive eher schwierig, und Fehler können Fehler verursachen, die eine lange Zeit dauern kann, sich zu zeigen (da Sie in der Regel abhängig von timing). Wenn Sie bereits eine Bibliothek mit higher-level-primitiven, die tun, was Sie wollen und sind schnell genug für Ihren Bedarf (und nicht davon ausgehen, Sie sind zu langsam, nur weil du eine Funktion aufrufen), ist es am besten, um das Rad nicht neu erfinden.
Nicht. Der GCC built-ins machen es wahrscheinlich Sinn, die Jungs, die schreiben, Betriebssysteme, libc, und vielleicht pthreads sich selbst, sondern für Ihre Durchschnittliche Anwendung gibt es keinen Grund, nicht zur Verwendung der pthreads-Ansatz.
Und auch wenn Sie immer mit GCC, einige Tage Sie möchten möglicherweise führen Sie eine statische Analyse-tool, das nicht behandeln alle Kunden-GCC-Erweiterungen.
C-Erweiterungen
http://gcc.gnu.org/ml/libstdc++/2006-06/msg00089.html
Atomic+Gelieferten
http://sources.redhat.com/ml/libc-alpha/2005-06/msg00132.html
http://www.redi.uklinux.net/doc/c++/shared_ptr.html
atomic gelieferten Sinn machen, wenn Sie wollen, um die Leistung zu verbessern. Gelieferten erlauben, Sie zu minimieren Sie Konflikte, verursacht durch die Serialisierung von mutexes. Wenn Sie Mutexe und eine kritische Sitzung, die Sie serialisieren Zugang zu diesem Abschnitt des Codes; Leistung-code möglicherweise möchten Sie versuchen zur Vermeidung von Konflikten durch die Verwendung von thread-spezifischen Daten und, wenn nicht möglich mit atomics. Im letzten Fall ist das sperren und beim verriegeln, minimieren die Zeit, in der die Sperre gehalten wird (mit messaging-und double-checked locking, obwohl einige behaupten, es funktioniert nicht-funktioniert für mich).