anu221208 Geschrieben 31. Oktober 2009 Geschrieben 31. Oktober 2009 Hallo, Es geht um folgendes ich habe in diesem eine Semesteraufgabe aufbekommen ich habe mich für die Themen "multithreading" und "Timer" entschieden. Aufgabenstellung: ich soll beide Themen in einem kleinen Progamm darstellen und eine entsprechende Ausarbeitung erstelle. Nun bin ich auf einige Probleme gestossen. Programmiert soll das ganze in C++ und in Visual Studio 2008 mein Gedanke: - mittels der tick Methode des timers die aktuelle systemzeit und datum im label darstellen. - 2ter timer (der genauer ist) zeitmessung der threads. - 2 threads starten nach button click - bubblesort und quicksort. also realisiert habe ich bisher folgendes. 2 pictureboxen 200px x 200px 2 arrays mit je 200 zufallszahlen auf button klick werden beide felder sortiert und dann die picturebox neu gezeichnet ich habe meine sortieralgorithem,zufallszahlen generation stehen in einer von mir erstellten cpp in einer eigenen klasse. jetzt kommen meine 2 probleme. 1. will ich natürlich mehr als 200 zufallszahlen erstellen und auch darstellen. das erstellen ist da eher weniger das problem mehr das darstellen. aus visual basic zeiten bin ich gewohnt das mit der size() methode der picture box zu machen. das funktioniert aber hier nicht da er dann die picturebox größer macht also zb 20000px x 200000px was natürlich nicht sein soll ^^. ich will ja nur den wertebereich auf der x und y achse einstellen so das ich da mehr als 200zahlen darstellen kann. 2. problem: damit man nicht nur ein bild vor dem sortieren und danach hat würde ich gerne jeden einzelschritt neu zeichnen, sprich nach jedem tauschvorgang. da man aber bei visual studio 2008 aus seiner eigenen cpp bzw klasse nicht auf die form1.h zugreiffen kann, kann ich auch nicht auf die methoden bzw die elemente zb die picturebox zugreiffen und somit das neuzeichnen erzwingen. meine frage ist kann ich an meine sortieralgos einen pointer auf meine picturebox übergeben um dann in den algos die methode neuzeichnen aufzurufen ? oder gibt es da andere schöne möglichkeiten ? und ganz allgemein zu threads: bisher werden meine sortieralgos ja nacheinander ausgeführt. natürlich sollen die in threads ausgelaggert werden wie kann ich das programmiertechnisch realisieren ich hab mich zwar schon eingelesen aber meine leküre verstehe ich nicht so richtig ich hoffe ich habe alles genau genug beschrieben und freue mich auf eure hilfe xD Zitieren
flashpixx Geschrieben 31. Oktober 2009 Geschrieben 31. Oktober 2009 Was hat die Visualisierung verschiedener Sortieralgorithmen mit Multithreading und Timern zu tun? Ein Timer ist nicht genau genug, wenn es Dir um die Laufzeit diverser Algorithmen geht, außerdem beachtest Du dabei dann nicht, dass ein Thread auch "schlafen kann", Deine Zeit läuft aber weiter, wenn der Thread untätig ist Zitieren
anu221208 Geschrieben 31. Oktober 2009 Autor Geschrieben 31. Oktober 2009 ich weiß das ein timer zu ungenau ist aber da gibt es ja noch genauere also so im nanosekunden bereich. die visualisierung mehrerer sortieralgorithmen soll nur ein einfaches beispiel sein damit man einfach sieht das beide algos (threads) gleichzeitig ausgeführt werden. Zitieren
flashpixx Geschrieben 31. Oktober 2009 Geschrieben 31. Oktober 2009 ich weiß das ein timer zu ungenau ist aber da gibt es ja noch genauere also so im nanosekunden bereich. Du kannst aber keine Aussage über die wirkliche Zeit Deines Algorithmus treffen, wenn der OS z.B. aus irgendwelchen Gründen den Thread pausiert, läuft Dein Timer weiter, der Thread arbeitet aber nicht, d.h. die spätere Zeitangabe zur wirklichen Rechenzeit Deines Algorithmus stimmt nicht die visualisierung mehrerer sortieralgorithmen soll nur ein einfaches beispiel sein damit man einfach sieht das beide algos (threads) gleichzeitig ausgeführt werden. Dafür kannst Du auch zwei Programme starten und diese parallel arbeiten lassen. Ist letztendlich das gleiche. Auch wenn ich hier via MPI die Algorithmen auf 2 CPUs laufen lassen, wäre das Ergebnis das gleiche. Außerdem hast Du bei so einer Aufgabe nichts über Mutex oder Dead-Locks ausgesagt. Sorry, aber für eine Semesterarbeit über Multithreading würde ich mehr erwarten Zitieren
anu221208 Geschrieben 1. November 2009 Autor Geschrieben 1. November 2009 mh ok das timer problem verstehe ich ^^ ja der dozent hat mir das so beschrieben das er das gerne so hätte, deswegen versuche ich das jetzt umzusetzten. mit 'semesteraufgabe' habe ich mich wahrscheinlich etwas falsch ausgedrückt. ich meine damit das ich das ganze semester zeit habe. dem dozenten geht es aber weniger um das programmiertechnische (das soll nur als kleines beispiel zur visualisierung dienen) mehr um eine präsentation und eine schriftliche ausarbeitung über das thema ... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.