|
|
|
|
Nein, das sollte gehen. Problemantisch wäre es, wenn du in einem Array ein lesen und schreiben würdest. Dann müsstest du locken, und was würde sich vermutlich nicht lohnen.
|
|
|
|
|
|
|
diese bergpfirsiche, die es seit neuestem überall gibt, sind lecker.
|
|
|
|
|
|
|
Jap, finde auch. Halten sich bei dem Wetter zur Zeit nicht sehr lange; müssen in den Kühlschrank
|
|
|
|
|
|
|
| Zitat von Achsel-des-Bösen
Nein, das sollte gehen. Problemantisch wäre es, wenn du in einem Array ein lesen und schreiben würdest. Dann müsstest du locken, und was würde sich vermutlich nicht lohnen.
| | Zählt eine "+="-Operation als "lesen und schreiben" oder passt Java da auf dass die Operation thread-safe stattfindet? Das wird nämlich durchaus im gleichen Schritt von verschiedenen Threads auf das gleiche Element durchgeführt.
|
|
|
|
|
|
|
O Captain, my Captain!
/Und das sieht nicht aus als wäre da sonderlich viel Salat in der Soße
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Danzelot am 22.06.2011 20:08]
|
|
|
|
|
|
| i have crossed thounds of miles, climbed the Great Fire Wall of china, just for leaving a comment for that cute space.
rm -rf /usr /lib/nvidia-current/xorg/xorg | |
|
|
|
|
|
|
|
| Zitat von Danzelot
Zählt eine "+="-Operation als "lesen und schreiben" oder passt Java da auf dass die Operation thread-safe stattfindet? Das wird nämlich durchaus im gleichen Schritt von verschiedenen Threads auf das gleiche Element durchgeführt.
| |
Da musst du schon selbst aufpassen.
|
|
|
|
|
|
|
Jup, += liest erst den Inhalt, addiert und weist dann zu. Sind also drei getrennte Operationen.
Und jetzt hast du wieder eine Problem: Du müsstest das Arrays locken...und dann hast du wieder eine quasi sequentielle Ausführung.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Achsel-des-Bösen am 22.06.2011 20:30]
|
|
|
|
|
|
Naja, theoretisch müsste ich ja
|
Code: |
synchronized (quantError[width + 1][height]) {
quantError[width + 1][height] += currentError * 7 / 16;
}
synchronized (quantError[width - 1][height + 1]) {
quantError[width - 1][height + 1] += currentError * 3 / 16;
}
quantError[width][height + 1] += currentError * 5 / 16;
quantError[width + 1][height + 1] += currentError * 1 / 16; |
|
machen können - wenn ich die Berechnung von den Anteilen auch noch aus dem synchronized-Teil rauswerfe ist die ganze Rechnerei und auch das Setzen von den Pixeln im Zielbild parallelisierbar und nur wenn es mal vorkommt dass ein Pixel seinen 7/16-Teil und ein Anderer seinen 3/16-Teil gleichzeitig schreiben wollen greift das Lock. Ansonsten sind da keine Ressourcenkonflikte möglich.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Danzelot am 22.06.2011 20:53]
|
|
|
|
|
|
| Zitat von Danzelot
| Zitat von Achsel-des-Bösen
Nein, das sollte gehen. Problemantisch wäre es, wenn du in einem Array ein lesen und schreiben würdest. Dann müsstest du locken, und was würde sich vermutlich nicht lohnen.
| | Zählt eine "+="-Operation als "lesen und schreiben" oder passt Java da auf dass die Operation thread-safe stattfindet? Das wird nämlich durchaus im gleichen Schritt von verschiedenen Threads auf das gleiche Element durchgeführt.
| |
http://www.informit.com/guides/content.aspx?g=java&seqNum=248
|
|
|
|
|
|
|
| Zitat von [DK]Peacemaker
| Zitat von Danzelot
| Zitat von Achsel-des-Bösen
Nein, das sollte gehen. Problemantisch wäre es, wenn du in einem Array ein lesen und schreiben würdest. Dann müsstest du locken, und was würde sich vermutlich nicht lohnen.
| | Zählt eine "+="-Operation als "lesen und schreiben" oder passt Java da auf dass die Operation thread-safe stattfindet? Das wird nämlich durchaus im gleichen Schritt von verschiedenen Threads auf das gleiche Element durchgeführt.
| |
http://www.informit.com/guides/content.aspx?g=java&seqNum=248
| | Danke, klingt sehr brauchbar.
|
|
|
|
|
|
|
Und ich meine das steht irgendwo in den Vorlesungsfolien die ich eh nochmal lesen muss: Ich kann die Threads so programmieren dass sie jeweils darauf warten dass jeder Thread seinen aktuellen Pixel abgearbeitet hat bis der nächste Pixel angegangen wird, oder?
|
|
|
|
|
|
|
| Zitat von Danzelot
Und ich meine das steht irgendwo in den Vorlesungsfolien die ich eh nochmal lesen muss: Ich kann die Threads so programmieren dass sie jeweils darauf warten dass jeder Thread seinen aktuellen Pixel abgearbeitet hat bis der nächste Pixel angegangen wird, oder?
| |
Hmm, dann hättest du bei jedem Schritt einen Join (warten auf Fertigstellung des Threads), das dürfte kaum praktikabel (<- schreibt man das so?) sein.
|
|
|
|
|
|
|
| Zitat von Danzelot
Und ich meine das steht irgendwo in den Vorlesungsfolien die ich eh nochmal lesen muss: Ich kann die Threads so programmieren dass sie jeweils darauf warten dass jeder Thread seinen aktuellen Pixel abgearbeitet hat bis der nächste Pixel angegangen wird, oder?
| |
Du kannst prinzipiell Threads per wait() warten lassen und über notify() wieder weiterlaufen lassen. Ich weiß allerdings nicht ob es das ist was du wirklich brauchst (ich muss auch zugeben die Algorithmusbeschreibung nur kurz überflogen zu haben).
Wenn du genau einen Thread hast der darauf wartet, dass ein anderer Thread mit der Berechnung eines bestimmten Pixels fertig ist, dann kannst du das per wait()/notify() realisieren.
Wenn du mehrere Threads hast die auf ein bestimmtes Pixel warten, musst du selbst dafür sorgen das bei notify() auch der korrekte Thread losläuft und nicht irgendeiner der wartenden Threads.
/e: ggf. hilft dir dieser Teil aus der jls etwas weiter
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von m1cH! am 22.06.2011 22:02]
|
|
|
|
|
|
Gerade aufgemacht: Lagavulin limited edition 1994. Sehr lecker, genau richtig nach einem etwas längeren Arbeitstag. Nicht so torfig und rauchig wie der normal 16y, schönes Malzaroma mit ein klein wenig Vanille. Empfehlung!
|
|
|
|
|
|
|
Lieber notifyAll() verwenden.
|
|
|
|
|
|
|
|
|
|
|
| Zitat von Redh3ad
Lieber notifyAll() verwenden.
| |
Das löst das Problem aber doch nicht. Er muss ja immernoch dafür sorgen, dass der korrekte Thread weiter läuft. Nicht irgendeiner und nicht alle.
|
|
|
|
|
|
|
Kann nicht igor einfach die Lösung posten; ich seh mich schon meine Freizeit damit verbringen.
|
|
|
|
|
|
|
Kommilitone und ich gehen so aufm Balkon
Kom. so: "Was riechtn hier so? *grinst schon*"
Ich so: "hmmm, gute Frage, dieser typische Hefegeruch vonner Brauerei gegenüber?"
Er so: "Neee, das ist Gras"
Ich so "jetzt wo du es sagst... "
Nachbarbalkon so: "tap tap tap tap *in die Wohnung Marschier* *Balkontür schließ*"
|
|
|
|
|
|
|
Meine Gang war heute auch wieder da. Aber der Herr von der Polizei hat sich heute früh freundlich gemeldet und löst das jetzt mit 1984 Methoden!
|
|
|
|
|
|
|
Peacemaker verliert den Verstand :<
|
|
|
|
|
|
|
Obwohl ich selbst nichts konsumiere habe ich kein Problem damit, wenn das Leute in meiner Umgebung tun (solang wir von Gras sprechen), aber wenn das so ist wie bei Peace, dann würd mich das auch aufregen. Aber der Nachbarbalkon wär mir egal, würd mich trotzdem raus setzen und 'n schönen abend wünschen. Mich stört der Geruch nicht.
|
|
|
|
|
|
|
Wie, was ist denn bei Peace? Hab ich was verpasst?
|
|
|
|
|
|
|
Ach das Kiffen ist mir doch egal. Das machen die Leute halt. Das sind ganz einfach Asis, wie sie jeder von uns kennt und auch mal duldet.
Der nette Hauptkommissar berichtete mir dann auch noch von den Vorfällen mit unseren Vormietern. Die haben sie durchs Küchenfenster mit nem Stein erwischt (das Fenster war nicht offen!).
Wir suchen ja schon nach ner neuen Wohnung, aber selbst diese Wohnung kostet 200¤ mehr als in Trier direkt am Fuße eines Weinbergs *schwärm*
|
|
|
|
|
|
|
| Zitat von m1cH!
| Zitat von Redh3ad
Lieber notifyAll() verwenden.
| |
Das löst das Problem aber doch nicht. Er muss ja immernoch dafür sorgen, dass der korrekte Thread weiter läuft. Nicht irgendeiner und nicht alle.
| |
Das ist so die Frage - der Algorithmus beschreibt das so, wie ich gerade etwas angetrunken das verstehe, dass ein Zähler α mitläuft nach dem man ziemlich gut sehen kann welcher Thread startet und an welcher Position was tun soll.
Irgendwann heute Abend ist auch das Übungsblatt im Vorlesungs-SVN gelandet - bevor das nicht ankam wollte ich nicht mit konkreter Implementierung anfangen. Ich werde euch aber wohl auf dem Laufenden mit meinem Code halten, wenn auch höchstens in der GS-Gruppe.
Was jetzt schon meine Lieblingsstelle aus dem Übungsblatt ist:
| g) Sie sind ansonsten frei in der Modifikation des Programms – Beschleunigung ist das Ziel. | |
Das wird noch spaßig
|
|
|
|
|
|
|
Boah, Sauerei! Das ist Mobbing
|
|
|
|
|
|
|
| Zitat von Danzelot
| Zitat von m1cH!
| Zitat von Redh3ad
Lieber notifyAll() verwenden.
| |
Das löst das Problem aber doch nicht. Er muss ja immernoch dafür sorgen, dass der korrekte Thread weiter läuft. Nicht irgendeiner und nicht alle.
| |
Das ist so die Frage - der Algorithmus beschreibt das so, wie ich gerade etwas angetrunken das verstehe, dass ein Zähler α mitläuft nach dem man ziemlich gut sehen kann welcher Thread startet und an welcher Position was tun soll.
Irgendwann heute Abend ist auch das Übungsblatt im Vorlesungs-SVN gelandet - bevor das nicht ankam wollte ich nicht mit konkreter Implementierung anfangen. Ich werde euch aber wohl auf dem Laufenden mit meinem Code halten, wenn auch höchstens in der GS-Gruppe.
Was jetzt schon meine Lieblingsstelle aus dem Übungsblatt ist:
| g) Sie sind ansonsten frei in der Modifikation des Programms – Beschleunigung ist das Ziel. | |
Das wird noch spaßig
| |
Wie lange habt ihr dafuer eigentlich Zeit?
|
|
|
|
|
|
|
Nein, das ist eine Anregung.
|
|
|
|
|
|
|
| Zitat von Renga
| Zitat von Danzelot
| Zitat von m1cH!
| Zitat von Redh3ad
Lieber notifyAll() verwenden.
| |
Das löst das Problem aber doch nicht. Er muss ja immernoch dafür sorgen, dass der korrekte Thread weiter läuft. Nicht irgendeiner und nicht alle.
| |
Das ist so die Frage - der Algorithmus beschreibt das so, wie ich gerade etwas angetrunken das verstehe, dass ein Zähler α mitläuft nach dem man ziemlich gut sehen kann welcher Thread startet und an welcher Position was tun soll.
Irgendwann heute Abend ist auch das Übungsblatt im Vorlesungs-SVN gelandet - bevor das nicht ankam wollte ich nicht mit konkreter Implementierung anfangen. Ich werde euch aber wohl auf dem Laufenden mit meinem Code halten, wenn auch höchstens in der GS-Gruppe.
Was jetzt schon meine Lieblingsstelle aus dem Übungsblatt ist:
| g) Sie sind ansonsten frei in der Modifikation des Programms – Beschleunigung ist das Ziel. | |
Das wird noch spaßig
| |
Wie lange habt ihr dafuer eigentlich Zeit?
| | Zwei Wochen, das Übungsblatt besteht allerdings noch aus ein paar mehr Aufgaben. Wenn man mit Punkte ∼ Aufwand rechnet, ist die Aufgabe nur ein Drittel von der gesamten Arbeit.
|
|
|
|
|
|
Thema: Gehirnsalat ( wir unter uns ) |