Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Wieso NICHT Multithreading?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.06.2004, 10:14 Uhr
Unwissende
...die wirklich Unwissende 8-)


Guten Morgen,

ich schreibe gerade ein paar Zeilen zu einem Program, das ich geschrieben habe. Nun brauche ich noch eine überzeugende Begründung, wieso ich beim Single-Thread geblieben bin und das ganze nich mit Multi-Threading gelöst habe. Mir schien das als "Einsteigeraufgabe" einfach zu schwer, und so hab ich das PRoblem halt mit einem Timer, der eine Progressbar aktualisiert gelöst...

Code:
...The combination of timer and the three functions made the considerations of creating a multi-threading program superfluous. Multi-Threading is the ability to execute more than one Sub or Function at the same time in a single application. Applied to the existing program at least three threads would have been created. One thread for the time-consuming RAM test, another one for the interaction with the user (=the possibility to abort the RAM test) and one thread for the progressbar’ s update....



Öhm, ja, mein Englisch ist jetzt leider nicht so gut, aber ich hoffe, ich versteht das.. Wie gesagt, es fehlt doch noch irgendwie eine bessere BEgründung, findet ihr nicht?
Da fällt mir ein, man könnte irgendwie auch noch besser beschreiben, was der Timer jetzt genau macht:

C++:
void CComputeDlg::OnTimer(UINT nIDEvent)
{
        if (select_test_mode==true)
        {
            CProgressCtrl* pBar=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);
            pBar->SetPos((i)*100/32);         }
        else
        {
            CProgressCtrl* pBar_1=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);
            pBar_1->SetPos((i_addr)*100/8388608);
        }
        

        CDialog::OnTimer(nIDEvent);
}


--
__________________________________
Unwissenheit ist vorläufig- Dummheit für immer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.06.2004, 12:18 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


wiso sollte man einen Thread nehmen wenns ohne grosse Probleme auch ohne geht?

Naja man kanns natürlich auch so sehen: Warum einfach wenns auch kompliziert geht...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.06.2004, 10:30 Uhr
ao

(Operator)


Das würde ich nur dann wirklich aufwändig begründen, wenn das Multithreading ausdrücklich Teil der Aufgabe war; dann musst du nämlich erklären, warum du davon abgewichen bist.

Wenn nicht (d.h. wenn es nur hieß "Schreiben Sie ein Programm ...") dann ist halt das Ergebnis so, wie es ist: Du hast einen Haupt-Thread, der die Arbeit macht, und benutzt einen Betriebssystem-Timer, um periodisch die Anzeige aufzufrischen.

Wenn sich Dinge als unnötig herausstellen, verlangt normalerweise kein Mensch eine Rechtfertigung dafür, dass man sie tatsächlich weggelassen hat.

Oder ist das bei euch anders?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.06.2004, 08:36 Uhr
Unwissende
...die wirklich Unwissende 8-)


Naja, es gab so einige Diskussionen im Vorfeld, wie ich jetzt die Aufgabe am einfachsten lösen könnte. Der Informatiker, der mir ab und an geholfen hat, war ja fest der Meinung, frau könnte das NUR mit Multithreading lösen, aber da war ich dann schon viel zu weit in meinem Prog, dass ich wieder aufgehört hätte Mein Chef hats jetzt abgesegnet, alle sind glücklich, und die Praktikantin verbringt jetzt ein paar ruhige Stunden mit User-Manual-Verfassen
--
__________________________________
Unwissenheit ist vorläufig- Dummheit für immer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.06.2004, 09:06 Uhr
ao

(Operator)



Zitat:
Unwissende postete
Der Informatiker, der mir ab und an geholfen hat, war ja fest der Meinung, frau könnte das NUR mit Multithreading lösen, ...

... oder man kriegt ne sehr starre Kopplung zwischen der Oberfläche und dem Programm darunter (einen Block Speicher testen, danach Fortschrittsanzeige neu malen und mal gucken, ob "Abbrechen" gedrückt wurde, dann nächsten Block ...), aber das will man in der Regel auf keinen Fall.
Also stimmt das schon: wenn ein brauchbares Programm draus werden soll, geht das nur mit Multithreading.
Aber es ist ja ein Multithreading-Programm, auch wenn du selber nur nicht mit Threads hantierst. Denn hinter der ganzen Timer-Tapete steckt ein Thread des Betriebssystems.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.06.2004, 12:27 Uhr
RHBaum




Zitat:

Denn hinter der ganzen Timer-Tapete steckt ein Thread des Betriebssystems.


Laeuft nicht die ganze Messagepump eh in nem eigenen Thread ? Somit sollte jedes Programm mit Fenster was die Nachrichtenverarbeitung nicht expliziet abklemmt, eh multithreaded sein ... oder ?

Wie tief ist das Verstaendniss derer, die deine Begruendung akzeptieren muessen. Die Perfekte loesung ist immer Multithreading, der Informatiker wird eh dazu neigen, weil er sich damit auskennt. Und Uebersichtlichkeit / Wartbarkeit beim umgehen von Multithreading meist etwas darunter leiden. Aber kannst ja begruenden, dass der Aufwand, um deine Objekte multhreadsicher zu machen, ned im Verhaeltniss zum nutzen steht ... und noch so mit Fremdwoertern wie shared memory, mutex und critical section um dich werfen

Ciao ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.06.2004, 13:32 Uhr
ao

(Operator)



Zitat:
RHBaum postete
Aber kannst ja begruenden, dass der Aufwand, um deine Objekte multhreadsicher zu machen, ned im Verhaeltniss zum nutzen steht ... und noch so mit Fremdwoertern wie shared memory, mutex und critical section um dich werfen

Bloß nicht! Das wird sofort durchschaut! Das ist ne Steilvorlage für jeden, der gerade einen Frust abzureagieren hat. Genausogut kannst du dir ein Schild umhängen: "Ihr dürft mich fertigmachen, Leute!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.06.2004, 15:37 Uhr
RHBaum



Stimmt, wenns wer durchschaut, bist dran ...
naja, war wenigstens nen Versuch .... sonst faellt mir nix ein ...

Ciao ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
23.06.2004, 22:27 Uhr
~Unwissende
Gast


Hui, kaum hat man auf der Arbeit mal einen Tag lang kein Internet, schon verpasst man hier was
Mein Chef hat das Prog etwa eine Stunde lang in meinem Beisein getestet und mich dabei gelöchert (hab ich schon erwartet )...Aber ich hab ihm dann das mit dem Timer usw. erklärt, nochmal genau, was der Speichertest nun wirklich macht etc. etc. etc. Also mit Fremdwörtern um mich zu werfen, das mache ich lieber nicht....Da werde ich sofort, aber wirklich sofort durchschaut...Aber irgendwie hat das ja auch was Gutes, das sogar mit Studentenarbeiten sehr kritisch umgegangen wird: Es gibt kaum ne Möglichkeit zu pfuschen Außerdem muss ich das Ergebnis wohl zum Ende des Praxissemesters auch noch der ganzen Abteilung vorführen, und da kann ich mir echt net erlauben, von Dingen zu reden, die ich selbst nicht verstehe...
Naja, egal, ich erfreue mich jetzt mal dabei, mein Prog zu nutzen und fröhlich Boards zu testen...Echt ein lockerer Job.
Nochmal Danke an dieser Stelle, an alle, die meine (manchmal auch nervigen ) Fragen immer wieder so geduldig beantwortet haben
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: