You are not logged in.

  • Login
Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

BtoBastian

Moderator

  • "BtoBastian" is male

Posts: 3,612

Occupation: Softwareentwickler

  • Send private message

41

Tuesday, January 28th 2014, 9:48pm

Eine nervige Arbeit, die Bukkit größtenteils vernachlässigt hat.
Ich versuch mal ein Beispiel zu finden:

Java source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class DoppelterRingtausch {
  
  private int var1 = 1;
  private int var2 = 2;

  public void getVar1() {
    return var1;
  }

  public void getVar2() {
    return var2;
  }

  public void ringtauschZweimal() {
    int temp = var1; // Zeile 1
    var1 = var2;  // 2
    var2 = temp; // 3
    int temp2 = var1; // 4
    var1 = var2; // 5
    var2 = temp2; // 6
  }

}


Wenn man nun eine Instanz der Klasse hat auf die 2 Threads gleichzeitig zugreifen, dann kann sowas passieren:
Thread1: ringtauschZweimal()
Thread2: getVar1();
Wenn das getVar1() aufgerufen wurde, während der Ringtausch z.B. bei Zweile 3 angelangt ist, kann es jetzt passieren, dass man 2 zurückbekommt, obwohl es eig. immer 1 sein sollte (am Ende des doppelten Ringtausches).
Noch interessanter wird es wenn man die Ringtauschmethode aufruft während sie noch arbeitet.
Dann kann es passieren, dass var1 und var2 plötzlich beide den gleichen Wert bekommen. Wie das zustande kommt kannst du dir ja selber überlegen.
Ist jetzt nicht das beste Beispiel, aber das einzige das mir auf Anhieb eingefallen ist.
Standard Standart eines Flamingos ist einbeinig.

StackPointer

User / Kunde

Posts: 65

  • Send private message

42

Tuesday, January 28th 2014, 9:56pm

Grundlage dafür ist die Tatsache, dass moderne Betriebsysteme preemptives Multitaskting haben. Das bedeutet, dass ein Prozess oder Thread nie weiß, wann er wieder Rechenzeit bekommt. Das Betriebsystem macht keine Garantien, ob und wann er wieder arbeiten kann und welche anderen Threads und Prozesse in dieser Zeit ausgeführt sind. Dein Code kann also an jeder beliebigen Stelle angehalten werden und ein anderer Thread übernimmt die Kontrolle. Durch diese Unsicherheit ist eine gleichermaßen "faire" Abarbeitung der Prozesse mgöglich, mit den oben genannten Nachteilen.

Anderst sieht es hierbei bei kooperativem Multitasking aus, bei dem jeder Thread und jeder Prozess selbst entscheidet, wann er die Kontrolle zurück an den Kernel gibt. Dass die auf offenen System nicht funktionieren kann, weil somit ein Virus einfach die CPU auffressen könnte, leutet sicherlich ein.

Und am Rande: Als Echtzeitfähig bezeichnet man ein Betriebsystem, welches in der Lage ist, bestimmte Verhaltensweisen beim Wechseln der einzelnen Tasks zu garantierten. Hier ist es tatsächlich möglich, für eine bestimmte Zeit die Kontrolle über die CPU zu bekommen. Außerdem erlauben solche Systeme, dass man auf den Takt genau arbeiten kann, weil das System z.B. garantiert, dass es einen anderen Prozess in genau x Takten ausführen wird. Das wird vor allem bei s.g. embedded Installationen interessant, wie z.B. dem Bremsystem eines Autos, wo man im Vorraus exakt berechnen muss, wieviele Sekunden bestimmte Berechnungen brauchen.

In den meisten Programmiersprachen, existieren daher auch verschiedene Mechaniken, die Threads synchronisieren (Fachebegriff für den kontrollierten Zugriff mehrerer Threads auf die selben Speicherbereiche). Das ganze wird vor allem von Anfängern extrem häufig nicht erkannt und es treten die üblichen "bei vielen Spielern bekomm ich Fehler"-Threads auf, welche aufgrund des Charakters der Unvorhersagbarkeit nahezu unmöglich zu lösen sind, wenn man nicht bereits von Begin an entsprechendes Logging implementiert hat.

Noch schöneres Beispiel:

Du hast eine ArrayList auf die 2 Threads zugreifen. Die Länge ist 10 und ein Threads iteriert gerade über die Einträge. Während er bei Eintrag 9 angekommen ist und mit 10 beginnen will, wird er angehalten und ein 2. Thread entfernt den Eintrag 10 aus der Liste. Wenn nun der 1. Thread wieder dran kommt, wird er vermutlich eine ArrayOutOfBoundException bekommen. Bei komplexeren Systemen bedeutet das nicht selten, dass die gesamte Anwendung in einem instabilen Zustand ist.

mcfrankja

User / Kunde

  • "mcfrankja" is male

Posts: 13

Occupation: Informatiker

  • Send private message

43

Sunday, February 9th 2014, 11:36am

Also wer DeBukkit empfiehlt frisst auch kleine Kinder...
Was hat das eine Bitte mit dem anderen zu tun? Das sind zwei völlig unterschiedliche sachen !!!!
Außerdem empfehle ich als ausgebildeter informatiker DeBukkit weiter, weil es für anfänger gut verständlich ist. als Basis des Programmierens sind seine Videos gut.
Besuche uns Jetzt: MCFrankja.minecraft.to
-----><-----

TimBone

User / Kunde

Posts: 1,053

Thanks: 2

  • Send private message

44

Sunday, February 9th 2014, 11:40am

Als Basis wofür? mcfrankja, du bist laut deinem Profil 14! Wo macht man denn bitte mit 14 eine Ausbildung zum Informatiker? Hör auf so einen Quatsch zu reden, debukkit ist schlecht.

Zitat von »Linus Torvalds«

Nur Weicheier benutzen Datensicherungen auf Band: richtige Männer laden ihren wichtigen Kram einfach auf einen FTP und lassen diesen vom Rest der Welt spiegeln

YourSky

User / Kunde

Posts: 1,430

Occupation: HTML3 Hacker

Thanks: 5

  • Send private message

45

Sunday, February 9th 2014, 11:42am

@TimBone Dann müsste er ja sogar schon mit 12 oder 11 angefangen haben mit der Ausbildung (sorry falls das nicht ganz stimmt, aber ich kenne die Ausbildungszeit nicht...) O_o und @mcfrankja, nein nein nein nein nein nein DeBukkit ist der grösste Müll.
Mit freundlichen Grüßen,
Yonas


mcfrankja

User / Kunde

  • "mcfrankja" is male

Posts: 13

Occupation: Informatiker

  • Send private message

46

Sunday, February 9th 2014, 11:47am

Ich weiß ja nicht wo das stehen soll, dass ich 14 sei.
@YourSky Hintergrundinfo: Als Fachinformatiker braucht man eine 3 Jährige Ausbildung, + 1 Jahr Praxis
Besuche uns Jetzt: MCFrankja.minecraft.to
-----><-----

YourSky

User / Kunde

Posts: 1,430

Occupation: HTML3 Hacker

Thanks: 5

  • Send private message

47

Sunday, February 9th 2014, 11:50am

@mcfrankja und in welche Richtung, soweit ich weis gibt es Systemintegration und so was...

PS: und wie alt bist du wirklich, wenn du schon in diesem Beruf tätig bist?
Mit freundlichen Grüßen,
Yonas


mcfrankja

User / Kunde

  • "mcfrankja" is male

Posts: 13

Occupation: Informatiker

  • Send private message

48

Sunday, February 9th 2014, 11:55am

@YourSky
Ich weiß zwar nicht warum du das wissen möchtest, aber Ich habe meinen Fachtitel in Anwendugnsentwicklung oder für Klugscheisser wie dich, Programmiereung und Softwareentwicklung.

EDIT: Mein Alter geht dich zwar nichts an aber seit Dienstag 24 und im ersten Jahr nach der Ausbildung
Besuche uns Jetzt: MCFrankja.minecraft.to
-----><-----

TimBone

User / Kunde

Posts: 1,053

Thanks: 2

  • Send private message

49

Sunday, February 9th 2014, 12:22pm

@mcfrankja:, bis gerade eben stand auf deinem Profil noch, dass du 2000 geboren wurdest. Außerdem hängt hinten an deinem Skypenamen eine 2000... Schon irgendwie seltsam. Vielleicht möchtest du uns ja sagen, warum du DeBukkit so gut findest.

Zitat von »Linus Torvalds«

Nur Weicheier benutzen Datensicherungen auf Band: richtige Männer laden ihren wichtigen Kram einfach auf einen FTP und lassen diesen vom Rest der Welt spiegeln

YourSky

User / Kunde

Posts: 1,430

Occupation: HTML3 Hacker

Thanks: 5

  • Send private message

50

Sunday, February 9th 2014, 12:32pm

und als ich auf seinem Server war wurde ich gebannt und gekicked, weil ich nicht auf Deutsch geschrieben habe O_o und auf seinem Server ist er schon 25. :)
Mit freundlichen Grüßen,
Yonas


BtoBastian

Moderator

  • "BtoBastian" is male

Posts: 3,612

Occupation: Softwareentwickler

  • Send private message

51

Sunday, February 9th 2014, 1:05pm

ich als ausgebildeter informatiker

Willst du mich verarschen? :thumbdown:

Wen ich mir mal deinen letzten Thread anschaue: [Bukkit-Plugin] ERROR: NullPointerException
, dann glaube ich fast du hast gestern erst mit dem Programmieren angefangen.
Auf die Code Conventions geschissen, einfach alles in eine Klasse gepackt, ...

Niemand mit Ausbildung verzapft so nen Müll.
Oder hast du die Ausbildung am 25. Januar 2014 angefangen und gestern abgeschlossen? :pillepalle:
Standard Standart eines Flamingos ist einbeinig.

StackPointer

User / Kunde

Posts: 65

  • Send private message

52

Sunday, February 9th 2014, 3:59pm

DeBukkit ist schrott. Die Ausbildung nennt sich "Fachinformatikler Fachrichtung Anwendungsentwicklung" und geht 3 Jahre im dualen System (nix mit 1 Jahr Praxis, get your facts straight) und man ist dann auch kein ausgebilteder Informatiker, denn ein Informatiker macht etwas völlig anderes. Mit 24 noch in der Ausbildung ist übrigens auch extrem spät. Davon abgesehen kann jeder Depp die Ausbildung abschließen, das beweist in keinster Weise eine fachliche Qualifikation. Zu den restlichen Hinweisen auf 2000 als Geburtsdatum muss ich nichts sagen, das haben die anderen schon gemacht.

Klingt für mich eher wie ne zusammengelogene Story.

LEONATOR9

User / Kunde

Posts: 11

  • Send private message

53

Thursday, February 5th 2015, 4:40pm

Und Programmieren ist nicht mal so eben mit ein paar Seiten lesen getan, was glaubst wohl, wozu es im Studiengang Informatik Schwerpunkte für bestimmte Programmiersprachen gibt?!?!


Er hat doch garnicht gesagt das er programmieren lernen will indem er ein paar Seiten liest. Er hat gesagt wie man denn anfangen könnte, dass hättest du ihm ja mal beantworten können anstatt hier solche unverschämten/agressiven Narichten zu schreiben. Tur mir leid ich kenne mich da nicht so gut mit aus ich wollte nur hier jemanden mal etwas klar machen.

Mfg Leon

BtoBastian

Moderator

  • "BtoBastian" is male

Posts: 3,612

Occupation: Softwareentwickler

  • Send private message

54

Thursday, February 5th 2015, 5:15pm

Standard Standart eines Flamingos ist einbeinig.

Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net

Similar threads