Beiträge von Mogly1

    geht der Mac Downlaod evtl.?

    MySQL :: Download MySQL Community Server


    Habe ich aus:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Heyho, also ich habe mir das damals so geschrieben.

    Bin jetzt kein Experte in Java, also evtl. geht es cleaner :D. (geht es ja fast immer)


    MySQL klasse:


    Dann kannst du in deinem Programm das ganz einfach nutzen wie hier z.B.:

    kleiner eklärung dazu:

    Hey, kannst du in FiveM C# nutzen?


    Dann hätte ich das gerade mal eben erstellt (evtl. hilft dir das, ist jetzt nicht komplett done):


    Code:

    Hat ja nichts mit Clean Code zu tun. Was eine Troll Ergänzung.

    Meine Aussage war doch nur das Clean Code wichtig ist und du da recht hast.

    Jedoch nur als hint ist dein Clean Code nicht korrekt und darauf muss man achten, dass wollte ich damit nur sagen.

    Mir ging es nur darum, du meintest mein code ist dirty, ist ja auch richtig mein Code kann Cleaner geschrieben werden keine Fragen.

    Aber wenn du Clean Code vorschlägst, sollte er auch korrekt bleiben. Darum ging es mir nur, ich habe mich bei der Aussage nur auf deinen Clean Code bezogen, nicht auf Clean Code allgemeinen.

    Damit wünsche ich noch einen schönen Tag :thumbup:

    Naja, ich sag mal, eigentlich sollte der genauso funktionieren wie dein Code.

    Wieso meinst du, dass er nicht funktioniert?

    Nein, das ist leider absolut falsch, du nutzt nur einen normalen Lock mit einer globalen Variable, während mein Code eine Twofold-Lock und Ticketsystem(warteraum) nutzt.

    Grund:


    Zitat

    - Checking and setting the lock variable
    is by itself a critical section.
    - The simple lock approach does not
    meet all requirements for a solution to
    protect a critical section.


    Ein Lock reicht ungünstigerweise nicht aus, da das Sichern eines kritischen Abschnittes selbst kritisch ist.

    Dein Code hat leider Konflikte im kritischen Abschnitt Output:
    (Threads: 20 Brückenüberfahrten: 10.000)

    (Threads: 5 Brückenüberfahrten: 100.000)

    Mein Code (Ohne Konflikte):

    (Threads: 20 Brückenüberfahrten: 10.000)

    (Threads: 5 Brückenüberfahrten: 100.000)


    Aufgrund Lage der Zeit habe ich das nicht weiter hochskaliert, aber ich kann dir sagen, dass "Multiple Locks with Mutual Access – Lamport"

    Zitat

    The multiple locks with mutual access (Lamport) approach meets all requirements for a solution to protect a critical section.

    Das heißt in beiden Fällen kann es zu einer Race-Condition kommen, da die Variablen nicht richtig synchronisiert werden zwischen den Threads.

    Natürlich versucht jeder am schnellsten den lock zu nutzen. Jedoch, durch den Twofold-Lock, warten die anderen Threads bis ein Thread wieder aus dem kritischen Abschnitt ist, dies ist aber nur möglich mit den Twofold-Lock und einem Warte-System. oder "Twofold Lock with Mutual Precedence"


    Dafür sollte man z.B. stdatomic.h oder Mutexes nutzen.

    Wie erwähnt, sollen wir das ohne Hardware- oder Betriebssystemunterstützung lösen.

    Mit Mutex ist es ja ganz simpel :3


    Clean Code ist sehr wichtig, aber Kaliber du musst darauf achten, dass dein Clean Code nicht die Korrektheit ändert. Was bei deinem Code bedauerlicherweise der Fall ist.

    Dein Cleaner Code hätte jetzt mein Code verbuggt.

    Am Ende wurde meine Frage beantwortet von dir, also danke ich dir nochmals dafür. :thumbup:

    Kaliber Es lag wirklich an -O2 danke dir :3


    Die Status variable ist dafür da, um zu überprüfen, ob 2 Autos quasi im kritischen Abschnitt sind. Somit kann ich die nicht entfernen (so wie die for schleife dazu)

    Sonst kann ich das ja nicht kontrollieren.


    Also der Code von dir funktioniert nicht, dort fahren mehrere Autos über die Brücke, da der kritische Abschnitt nicht richtig ist gesichert ist. (quasi kein korrekter code)


    Ich habe mich an "Multiple Locks with Mutual Access – Lamport" gehalten.


    Aber ist ja egal. Mir ging es ja nur darum, wieso die Schleife nicht ging, wenn ich das printf entferne.

    Andosius

    Ja hier meine datei:
    NUM_THREADS ist auf 5 welches aber für beliebige gehen soll.

    crosses ist auf 10 welche aber eigtl. auf 100.000 mind. seien sollen. (aber durch den print, dauert das etwas. Weshalb ich es auf 10 gestelt habe)


    meine Makefile:


    Output so:

    output ohne:

    Code
    printf("thread waiting\n");//ohne das geht es nicht O.o

    und dann ist ein deadlock (also passiert nichts mehr...

    Kaliber

    Oh tut mir leid (wenn man so in Gedanken ist, vergisst man immer, dass ihr ja nicht alles habt wie ich :3).


    Also Ausgangspunkt:

    Wir sollen mit pthreads eine Simulation bauen. (von Autos die über die Brücke fahren aber immer einzeln)


    Im Code sollen wir noch ohne Hardware oder Betriebssystem Unterstützung arbeiten, um kritische Abschnitte zu bearbeiten.


    Die Threads generieren sich ganz normal,


    hier die lock und unlock Methoden, für den kritischen Abschnitt:


    Die Endlosschleifen sind wichtig, da die Threads während des kritischen Abschnittes nichts tun dürfen, da es sonst zu Fehlern kommt.(2 Autos auf der Brücke)


    Das "random Semikolon" ist doch dafür, dass die Endlosschleife funktioniert oder nicht? Wie schreibt man das sonst besser?


    So nun das Problem:

    Wenn ich das

    Code
    printf("thread waiting\n");

    entferne, kommt es zu einem Deadlock. Warum weiß ich aber nicht.

    (es ergibt für mich auch keinen Sinn)


    Kaliber (Wieso ist der Code maximal dirty? Wie schreibt man das besser?)

    Language: C
    Guten Tag, ich habe gerade eine Aufgabe mit p_threads. Evt. eine wichtige Information ^^.

    Mein Problem gerade ist,

    das ich zwei while schleifen habe und die erste funktioniert einwandfrei, bloß bei der zweiten funktioniert mein Programm nicht mehr, wenn dort nix drinnen steht also a++ oder co. ging auch nicht nur wenn gefühlt ein Print passiert?

    Ist das ein Bug von unseren Unirechnern oder brauch die schleife irgendetwas?

    Funktioniert:

    Code
                while (enter[i])
                    ;
                while((tickets[i] != 0) && ((tickets[tid] > tickets[i]) || ((tickets[tid] == tickets[i])&&(tid > i))))
                {
                    printf("thread waiting\n");
                }

    Funktioniert nicht:

    Code
                while (enter[i])
                    ;
                while((tickets[i] != 0) && ((tickets[tid] > tickets[i]) || ((tickets[tid] == tickets[i])&&(tid > i))))
                {
                    //printf("thread waiting\n");
                }
    Code
                while (enter[i])
                    ;
                while((tickets[i] != 0) && ((tickets[tid] > tickets[i]) || ((tickets[tid] == tickets[i])&&(tid > i))))
                    ;
    Code
                while (enter[i] || ((tickets[i] != 0) && ((tickets[tid] > tickets[i]) || ((tickets[tid] == tickets[i])&&(tid > i)))))
                    ;

    Hey,

    Meine Ideen(Mein Geschmack i guess)

    Zu aller erst, falls ich den nicht gefunden habe tut es mir leid, aber ein darkmode wäre ganz Nice.


    Ansonsten finde ich bei der Startseite, die Bilder, die oben durch gehen. Abgeschnitten. Ich würde es denke besser finden, wenn sie den ganzen Bildschirm einnehmen (mit einen leichten Fade oder Shadow effekt)

    Also von ganz links nach ganz rechts.(aber das ist Geschmackssache ^^)


    Und beim Warenkorb würde ich das entfernen etwas hervorheben, da grau auf weiß etwas unpassend ist meiner Meinung.

    Je nachdem wie viel Zeit du investieren willst, bzw. denk evtl. nicht zu groß wie schon erwähnt wurde. Ist die Community glaube recht klein im deutschsprachigen Raum.

    Ideen:


    Yoa, das wären Ideen, lass dich inspirieren. ^^

    Nein, das wird nicht funktionieren, da PVars, wie der Name schon sagt, Spieler bezogen sind, also ein SetPVar(carid wird nicht funktionieren bzw. zwangsläufig zu Fehlern führen.


    Verstehe die Notwendigkeit von dem PVar auch gar nicht, da der Name vom Besitzer des Fahrzeuges ja schon in cInfo[carid][besitzer] steht. Aber wie Maho schon anmerkte, wäre das eh viel zu Lange, also den Spielernamen sollte man faktisch nicht als Nummernschild verwenden.

    Ne in besitzer steht doch nur die db Id
    cInfo[id][besitzer]=PlayerInfo[playerid][p_id]
    da ich wie gesagt das jetzt lange nicht mehr gemacht hab, wusste ich nicht wie wir von Mysql das ausgeben lassen könnten ^^

    wie sieht getPlayerName, bei dir aus?


    Bzw, denke ich mal das es daran liegen wird, das dein getPlayName sicha uf die playerid bezieht und nicht auf die Datenbank_ID vom player.

    Ich habe hier mal was versucht, es wird wahrscheinlich einen viel besseren weggeben :thumbup: .

    Aber ich weiß nicht ob es überhaupt Funkt oder gut so ist ^^ (zu lange her)

    Wenn du jetzt aber die Autos nur erstellen lässt, wenn der Spieler auf dem Server ist, dann musst du das numberplate einfach dort setzen, wo du zugriff, auf playerid hast, um getPlayerName anzuwenden.

    unter Zeile 17

    Code
    new string[9];
    format(string,sizeof(string),"Sa-%d", cInfo[id][db_id]);//Text auf den Nummerschild, "cInfo[id][db_id]" ist die Datenbank id vom Fahrzeug
    SetVehicleNumberPlate(cInfo[id][id_x], string); //beachte noch die Notes https://sampwiki.blast.hk/wiki/SetVehicleNumberPlate
    SetVehicleToRespawn(cInfo[id][id_x]);//Da das Vehicle neu gestreamt werden muss)

    Falls respawn, nicht der kaufpunkt sein sollte notfalls nach Vehicle Respawn pos setzen

    Code
    SetVehiclePos(cInfo[id][id_x],x,y,z)

    An sich, falls es individuelle Plates geben soll, solltest du dir das NumberPlate auch abspeichern.

    Hey, versuch mal

    bei deiner methode, ein stock davor oder ein foward+public. Ich glaube, das hatte ich bei mir auch nur so, ging bei mir auch nicht. Aber ich bin mir nicht mehr zu 100% sicher deswegen teste das mal :)