Mehrere Threads Anhalten/Weiterführen
-
@VLSI_Akiko sagte in Mehrere Threads Anhalten/Weiterführen:
Da ist mir nichts bekannt, dass es da eine Art Flash oder so für x86 CPU's gibt. Wäre ja auch fatal, wenn man sowas direkt in die CPU "brennen" könnte, denk da nur mal Malware, uiuiui... Es gibt allerdings ein paar ARMs die sowas haben.
Ja, eben. Und genau weil x86 CPUs kein solches Flash haben, muss man die Microcode Updates bei jedem Boot neu über's BIOS/UEFI einspielen. Dass es im BIOS/UEFI steht ist also kein Argument dafür dass die Microcode Updates "nicht wirklich Microcode in der CPU updaten".
Ich glaube hier gibts ein kleines Missverständnis. Ich meine die div und udiv Opcode, also Integer Divisionen. 64 Bit Integerdivisionen gehen auf nahezu jeder 32 Bit CPU in Hardware, außer eben vielen 32 Bit ARMS ... und ja, das gilt auch für die Cortex-A Reihe. Das Ganze sieht dann so aus, wenn es mal wieder jemand in seinem Treibern vermasselt hat, und ich darfs fixen:
Ich hatte schon verstanden dass du Integerdivisionen meinst. Ich meine nur: ob jetzt wie bei ARM die Integerdivisionen fehlt, oder wie bei x86 nur die Fähigkeit mit Denormals zu rechnen - beides sind für mich Beispiele von fehlenden Features.
Ursprünglich war das Patentsystem dafür gedacht, dass du zumindest deine Entwicklungskosten wieder reinholen kannst. Es war zeitlich stark begrenzt (5-10 Jahre? keine Ahnung)
Patente in D und AT sind aktuell für max. 20 Jahre gültig. Lange, aber immer noch sehr vernünftig verglichen mit z.B. dem amerikanischen Copyright, welches aktuell für 70 Jahre nach dem Tod des Verfassers gilt.
Das sollte eigentlich nicht vorkommen, dafür gibt es ja eben die IEEE754 Spec an die sich alle aktuellen CPU's halten.
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.
-
@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.