Mehrere Threads Anhalten/Weiterführen
-
@hustbaer sagte in Mehrere Threads Anhalten/Weiterführen:
Soweit ich weiss sind die ganzen SIMD Geschichten in aktuellen CPUs nicht IEEE-konform. Eben weil bei Sachen wie Denormals die Kosten/Nutzen Rechnung nicht passt. Bei x86 gibt's immer noch die ganzen x87 Instruktionen wenn man IEEE braucht. Bei anderen Architekturen: keine Ahnung.
Ahh, wie reden von SIMD Units und nicht von den FPUs. Ja, dass ist eine andere Geschichte aber auch die lassen sich konfigurieren. Da gibt es richtig Opcodes für um die richtig einzustellen. Wobei, ARMs NEON ist 100% ieee754 konform und das gilt wohl auch für SSE/AVX. Oh schau an, Agner Fog hat dazu auch was zu sagen. Das Problem ist wohl die OoO execution innerhalb der SIMD Units. Man lernt eben nie aus.
-
So, jetzt aber genug der Anekdoten. Zurück zum Thema :). Tatsächlich geht es um einen GC in C++ und ich will die Stop-The-World Pausen reduzieren. Da wurden ja zuletzt mit Java beachtliche Verbesserugnen des GC erreicht . Siehe z. B. ZGC. Und da Java meines Wissens nach in C++ programmiert ist muss das ja irgendwie erreicht werden können? Meine alternative Idee um die Threads möglichst schnell zu stoppen wäre in z.B. Operatoren oder Funktionen die möglichst häufig verwendet werden eine Write-Barrier zu implementieren, die die Threads stoppt. Aber leider gibt es ja keine z. B. globalen operator* oder operator& die sich angeboten hätten. Und alle paar Zeilen im Code eine "GCStopThread();" Funktion oder so ähnlich aufzurufen ist auch nicht praktikabel.
-
Wir stellen also fest, deine eigentliche Frage war "Habt ihr Ideen, wie man einen GC schreiben kann, der fühlbare Ausführungsstops vermeidet?". Und weder ist überhaupt gesagt, wieso dein Ansatz aus dem ersten Beitrag überhaupt eine Lösung sein sollte, noch woher du die strikten Anforderungen aus dem ersten Beitrag zauberst. Man hätte sich die ganze Exkursion über die Echtzeitfähigkeit von Computern also sparen können, wenn du nur endlich lernen würdest, nach deinen eigentlichen Problemen zu fragen.
-
Hmm, das ist in der Tat eine ganz andere Frage. Manager für Smartpointer schreiben. Wrapper um Smartpointer schreiben, sodass jeder Smartpointer, der angelegt wird, als Owner auch den Manager bekommt. Manager schaut periodisch nach den Refcounts im Smartpointer, ist er 1, Smartpointer aus des Managers Liste schmeißen. Manager sollte selbst eine Heuristik bekommen, anhand er "beurteilen" kann, ob gerade ein guter Zeitpunkt ist, wie zum Beispiel spezieller Zustand des Programms, wo bekannt ist, dass gerade nicht viel passiert, oder vor Freigabeaktionen CPU-Last oder I/O Last checken. Das "Pausieren" (yields) der Threads an Conditionvariablen hängen, bzw ab C++20 atomic_flags verwenden (sind signifikant performanter). Eventuell könnte man auch die C++20 std::stop_token um Pausieren erweitern, ist allerdings etwas komplizierter. Hmm, bin schon fast versucht selbst was zu Basteln.
-
@SeppJ sagte in Mehrere Threads Anhalten/Weiterführen:
Man hätte sich die ganze Exkursion über die Echtzeitfähigkeit von Computern also sparen können,
Das war aber schon interessant
-
@zeropage sagte in Mehrere Threads Anhalten/Weiterführen:
@SeppJ sagte in Mehrere Threads Anhalten/Weiterführen:
Man hätte sich die ganze Exkursion über die Echtzeitfähigkeit von Computern also sparen können,
Das war aber schon interessant
Für uns ja, fand ich auch
Aber Enumerator hat's überhauypt nichts für sein Problem gebracht. Nun, wo die eigentliche Frage endlich raus ist, haben viele den Thread sicherlich schon als durchdiskutiert abgehakt. Und wer neu ist oder trotzdem noch mitliest, muss in all der Nebensdiskussion den einen Beitrag mit der eigentlichen Frage herauspicken.
-
@VLSI_Akiko sagte in Mehrere Threads Anhalten/Weiterführen:
Hmm, bin schon fast versucht selbst was zu Basteln.
Jupp, die Versuchung war zu groß, hab angefangen. Wenn Interesse besteht könnte ich ja mal eine Tutorialreihe lostreten, wie man verschiedene Patterns/Designs in modernem C++ aufzieht. (Ich bin jemand der grundsätzlich C++20/C++23 macht.)
@zeropage sagte in Mehrere Threads Anhalten/Weiterführen:
Das war aber schon interessant
@SeppJ sagte in Mehrere Threads Anhalten/Weiterführen:
Für uns ja, fand ich auchOh Gott, bringt mich bloß nicht in Versuchung ...
-
@VLSI_Akiko
Ich würde Dir gern ein Leckerli geben und Dich hinter den Ohren kraulen, aber irgendwie kann mir mein Hund seine Welt nicht so gut erklären wie Du die Deine. Ich hab jedenfalls ne Menge gelernt und würde das gern auch weiter tun.
-
Okay, dann versuche ich mal was auf die Beine zu stellen. Haben die Mods irgendwie Idee/Hinweise, wie ich das am besten in Forumform quetsche? Ich dachte ich mache mal ein paar Tutorials/Howtos, welchen modernen Features man kennen sollte und wie man sie am besten benutzt.
-
@VLSI_Akiko sagte in Mehrere Threads Anhalten/Weiterführen:
Okay, dann versuche ich mal was auf die Beine zu stellen. Haben die Mods irgendwie Idee/Hinweise, wie ich das am besten in Forumform quetsche? Ich dachte ich mache mal ein paar Tutorials/Howtos, welchen modernen Features man kennen sollte und wie man sie am besten benutzt.
Uff, gute Frage. Es gab mal das Magazin dafür, aber das machen wir nicht mehr so. Derzeit haben wir kein extra Unterforum für Qualitätsartikel. Wir haben nur die Standardmittel eines jeden Forums um Qualitätsbeiträge hervorzuheben. Also gepinnte Threads (wenn du alles in einen Thread packst) oder Links von einem zentralen, gepinnten Thread auf mehrere normale Unterthreads.
-
Wenn ich heutzutage sowas schreiben würde, würde ich vielleicht sowas wie ein GitHub Repo mit Markdown files machen.
-
@SeppJ sagte in Mehrere Threads Anhalten/Weiterführen:
Uff, gute Frage. Es gab mal das Magazin dafür, aber das machen wir nicht mehr so. Derzeit haben wir kein extra Unterforum für Qualitätsartikel. Wir haben nur die Standardmittel eines jeden Forums um Qualitätsbeiträge hervorzuheben. Also gepinnte Threads (wenn du alles in einen Thread packst) oder Links von einem zentralen, gepinnten Thread auf mehrere normale Unterthreads.
Also ich dachte da an ein Thread pro Topic, wobei ich da den ersten Post auf den laufenden halte. Alles an einem Stück zu schreiben ist je nach Thema ein bisschen viel, außerdem mache ich ja auch Fehler usw. Aber so etwas wie eine Unterkategorie (in C++) wie "Tutorials & Howtos" wäre ganz nett. Also dann eventuell später um da alles hinzuschieben, gibt bestimmt noch mehr, die was beitragen wollen. (Oder ich bin der einzige Idiot, der seine Freizeit opfert und anderen was beibringen will
)
@hustbaer sagte in Mehrere Threads Anhalten/Weiterführen:
Wenn ich heutzutage sowas schreiben würde, würde ich vielleicht sowas wie ein GitHub Repo mit Markdown files machen.
Hmm, ich möchte eigentlich nicht noch einen weiteren Github Account anlegen. Ich verliere langsame den Überblick über meine Keys.
Und ob ich meinen zentralen Github hier verlinke... hmm, weiß nicht.
-
Github klingt durchaus nach einer guten Idee für so etwas. Sowohl was die Versionsverwaltung, Diskussionsmöglichkeit, als auch die mögliche Reichweite angeht.
"Diskussionsmöglichkeit" als Vorteil von github mag zwar etwas komisch klingen, wo dies hier doch ein Diskussionsforum ist, aber bei solchen Artikeln möchte man ja gerade keine überbordende Off-Topicdiskussion. Da ist es dann ganz gut, wenn man nur gezielte Bugreports hat, die man als Hauptautor moderieren kann.
-
@SeppJ sagte in Mehrere Threads Anhalten/Weiterführen:
als auch die mögliche Reichweite angeht.
Genau. Wenn man es dann noch auf Englisch macht, dann haben potentiell noch mehr Leute was davon. Und auf die Kandidaten, die meinen Programmieren wäre was für Leute die kein Englisch können, muss (bzw. sollte) man denke ich eh nicht Rücksicht nehmen.
-
@hustbaer sagte in Mehrere Threads Anhalten/Weiterführen:
@SeppJ sagte in Mehrere Threads Anhalten/Weiterführen:
als auch die mögliche Reichweite angeht.
Genau. Wenn man es dann noch auf Englisch macht, dann haben potentiell noch mehr Leute was davon. Und auf die Kandidaten, die meinen Programmieren wäre was für Leute die kein Englisch können, muss (bzw. sollte) man denke ich eh nicht Rücksicht nehmen.
Also ich hatte vor Codefragment zu zeigen, dass muss nicht auf Github und hilft dem Forum hier sicher auch etwas. Vollständige Implementierungen packe ich dann natürlich auf Github.
Also das mit dem Englisch ist ein Trugschluss. Lass mich dir ein Beispiel geben.
p(fritz). p(hans). p(karl). l(B1,B2,B3):-p(B1),p(B2),p(B3),B1\=B2,B2\=B3,B1\=B3, B2\=hans,B1\=fritz,B2\=fritz. b(anton). b(bernd). b(christian). l(E,F,T,B,M,K):-b(E), b(F), b(T), b(B), b(M), b(K), E\=F, F\=T, E\=T, B\=M, M\=K, B\=K, E\=anton, F\=bernd, E\=B, F=M, K\=bernd.
Hrhr, niemand hat Syntax highlighting dafür, außer vielleicht vim. Ist etwa 25 Jahre alter Code. EDIT: Nein, nicht mal vim kennt es.
-
Lieber @hustbaer ,
ich dachte, es gibt ein deutschsprachiges C++ Forum um gerade Menschen, die nicht so sicher in der englischen Sprache sind, in C++ weiter zu helfen.Bitte überdenke doch noch mal den Satz "Und auf die Kandidaten, die meinen Programmieren wäre was für Leute die kein Englisch können, muss (bzw. sollte) man denke ich eh nicht Rücksicht nehmen.". Der kommt etwas komisch rüber in einem deutschsprachigen Forum. So ein bisschen von oben herab.
Ich unterstelle mal, dass Du auch schlecht englisch sprechende bzw. schreibende Menscher soweit Intelligenz zumutest, ordentlich programmieren zu können.Ach so mal so nebenbei, ich bin Legastheniker und bestreite mein Leben als Softwareentwickler. Ich kann ohne Rechtschreibprüfung also nicht mal richtig deutsch.
-
Ich denke, du missverstehst. Das ist kein Urteil über diese Leute, sondern einfach ein Fakt, dass man ohne fließende Englischkenntnisse (aus egal welchem Grund!) niemals über Amateurniveau hinaus kommen wird. Alle erwähnenswerten Experten schreiben nur auf Englisch (und zwar viel zu viel und viel zu zeitkritisch, als dass man alles übersetzen könnte), daher müssen alle ernsthaften Leser auch Englisch sprechen, wodurch es wieder noch mehr Gründe gibt, exklusiv auf Englisch zu publizieren. Und damit ist auch ein Großteil der Diskussionsplattformen zu dem Thema exklusiv auf Englisch, und alle Dokumentation erst Recht.
Für Anfängertutorials mag es Gründe für andere Sprachen geben, aber auch für jeden Anfänger gilt, dass kurz- bis mittelfristig Englisch Pflicht ist, um über das Anfängerniveau zu wachsen. Das wird auch kein einzelner Beitrag hier im Forum ändern.
(Das gilt nicht nur für Programmierung, sondern für so ziemlich jede Wissenschaft. Würde mich nicht überraschen, wenn das sogar für Germanistik gelten sollte)
-
@Helmut-Jakoby sagte in Mehrere Threads Anhalten/Weiterführen:
Bitte überdenke doch noch mal den Satz "Und auf die Kandidaten, die meinen Programmieren wäre was für Leute die kein Englisch können, muss (bzw. sollte) man denke ich eh nicht Rücksicht nehmen.". Der kommt etwas komisch rüber in einem deutschsprachigen Forum. So ein bisschen von oben herab.
Ich bin Utilitarist. D.h. ich akzeptiere kleine Ungerechtigkeiten zum Wohl der Vielen.
Die meisten die Programmieren sind junge Leute, und die haben üblicherweise Englisch in der Schule. Wenn sie dann mit 12, 13, 14 ankommen und nach deutschen Artikeln/Tutorials z.T. Programmieren fragen, weil sie sich mit Englisch so schwer tun, dann hab ich dafür halt relativ wenig Sympathie. Sie sind jung genug um noch relativ leicht lernen zu können, und wenn sie das irgendwann beruflich machen wollen, dann sollten sie ausreichend gut Englisch können um Fachartikel z.T. Programmieren lesen & verstehen zu können.
Mit denen, die dann zu faul sind ausreichend Englisch zu lernen, hab ich kein Mitleid. Vermutlich fallen da dann ein paar wenige durch den Raster, die irgendeine komische Lernstörung haben die es ihnen extrem schwer macht Englisch zu lernen, aber nicht so schwer macht Programmieren zu lernen. Und das ist ungerecht, aber das nehme ich in kauf. Womit wir wieder beim Utilitarismus wären.
Ich unterstelle mal, dass Du auch schlecht englisch sprechende bzw. schreibende Menscher soweit Intelligenz zumutest, ordentlich programmieren zu können.
Natürlich. Es geht hier ja nicht um Intelligenz. Es geht darum was mehr Sinn macht: Artikel zum Thema Programmieren auf Deutsch oder auf Englisch zu schreiben.
Und meine Meinung dazu ist ziemlich klar.
-
Das Thema der Sprache ist zwar ziemlich Off Topic, aber es ist sogar so, dass Mastersudienhänge in Deutschland teilweise nur auf Englisch angeboten werden.
Wobei ich da auch schon kuriose Sachen erlebt habe, wenn ein deutscher Muttersprachler auf mittelmäßigem Englisch, für andere deutsche Muttersprachlernmit mit eher mittelmäßigen englisch Kenntnissen, Vorlesungen und Übungen hält.
Mein Englisch ist bei weitem nicht so gut, wie es sein sollte, aber im Job Umfeld meine Hauptkommunikationssprache. Und zumindest englische Fachliteratur lesen können ist für alle im Informatik Umfeld unerlässlich.
-
Hallo @SeppJ,
danke für Deine Ausführungen. In der Sache hast Du natürlich recht, ohne Englischkenntnisse ist es natürlich extrem schwierig an die relevanten Informationen rund um das Programmieren zu gelangen. Ich habe auch gar nicht dem widersprochen, etwas in englisch zu machen.Es ging mir nur um den, meines Erachtens etwas ruppigen Teilsatz "...Kandidaten, die meinen Programmieren wäre was für Leute die kein Englisch können…".
Da bin ich eben einer etwas anderen Meinung.
Gerade ein Forum in einer Nationalsprache kann über die ersten Hürden einer Disziplin helfen und dann bei Interesse gerade die nicht in der dazugehörigen Wissenschaftssprache sprechenden Menschen dazu bewegen, diese Sprache zu erlernen. War z.B. bei mir so vor ca. 40 Jahren mit dem Buch Programming the 6502 by Rodnay Zaks (1981-09-24).
Ich warte auf den Tag, wo wir als Entwickler irgendeiner Sache und sonstig akademisch Arbeitende chinesisch können müssen
, es gab ja auch mal römisch (heute Latein?). Ach ja, Deutsch und Französisch waren bis zum Ende des 2. Weltkrieges auch anerkannte Wissenschaftssprachen; so schnell kann es gehen (nachzulesen https://de.wikipedia.org/wiki/Wissenschaftssprache).
Hallo @hustbaer,
Deine Meinung akzeptiere ich.Hallo @Schlangenmensch,
"Und zumindest englische Fachliteratur lesen können ist für alle im Informatik Umfeld unerlässlich. "
Natürlich, wenn ich dann in dem Umfeld arbeiten möchte, da gebe ich Dir recht.Apropos kuriose Sachen; was haben wir uns früher über die ersten "deutschen Anleitungen" für in Asien gefertigte Produkte amüsiert.