Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

[FB] [Übung/Demo] Thread-Mandelbrot

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 22.12.2013, 21:37    Titel: [FB] [Übung/Demo] Thread-Mandelbrot Antworten mit Zitat

In Anbetracht zum Diskussionsthema hier ein etwas praktischeres Beispiel zusammengebaut: Mandelbrot-Menge mit Threads berechnen.

Download:

http://beilagen.dreael.ch/QB/ThreadMandelbrot.bas

Damit könnt Ihr Eure modernen Intel Core i7-Prozessoren einmal im Windows-Taskmanager bzw. "top" in Linux kurzzeitig auf 100% CPU bringen. ;-)

Hintergründiges: Dieses Demo-Beispiel verwendet kritische Abschnitte, einerseits das Ausgabefenster (Mutex um jeden PSET), andererseits auf die globale Array-Variable zeiverw(), welches die "Arbeit" verwaltet, also die Threads mit Zeilen zum Bearbeiten "füttert", bis es nichts mehr zu tun gibt.

Das Ganze ist nebenbei noch eine nette Anwendung eines ENUM-Datentyps (Zustände als Symbole für den Compiler statt irgendwelche Integers).

Nebenbei: Vor 25 Jahren hätte ich von einer derartigen Rechenleistung heutiger CPUs nur geträumt, denn damals hätte dieses Bild bei deutlich geringerer Auflösung und geringerer maximaler Rechentiefe bereits eine Nacht lang auf einem IBM PC/XT oder Commodore 64 gerechnet...

/edit: Klasse GfxThreadSafe zur Demonstration von Einkapselung implemenetiert; diese könnte der Autor in der zu Beginn genannten Diskussion noch um Methoden wie tsLine(), tsCircle() usw. ergänzen. Und weil Mandelbrotmengen aus der Welt der komplexen Zahlen stammen, gleich noch eine Klasse für komplexe Zahlen geschrieben; dank Operator-Implementiermöglichkeit kann in FB dadurch sogar 1:1 die Formel z=z^2+c formuliert werden! :-)
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
darkinsanity
aka sts


Anmeldungsdatum: 01.11.2006
Beiträge: 456

BeitragVerfasst am: 23.12.2013, 07:05    Titel: Antworten mit Zitat

Nette Sache, und du hast sogar an die langsame Wurzel gedacht zwinkern
Wobei es sich allerdings anbieten würde in Zeile 83 die Konstanten für Breite und Höhe zu verwenden statt fester Werte.
Vor kurzem durfte ich sowas selbst für die Uni implementieren, allerdings in C. Verlangt waren eine serielle und eine mit SSE optimierte Implementierung, meine Lösung hat zusätzlich noch OpenMP verwendet. In FreeBASIC wäre das leider nur schwer machbar, da es da weder SSE-Intrinsics noch OpenMP gibt.
_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz