Thread Erzeugen



  • Hello Zusammen,

    Habe ich eine Frage. Ich möchte die folgende Schleife als Thread schreiben. Wie kann ich machen?

    void 59Dlg::OnMessen()
    
    {
                           ofstream ausgabe;
    
    		ausgabe.open(filename[0], ios::ate|ios::app);
    		for (int i=0; i< 100]; i++)
    		{	
    			for (int j=0; j< 1000; j++)
    			{	
    
    ausgabe << j << endl;
    j++;
    
    			}
    
    		}
    
    }
    

    Ich habe schon einige Information von Bücher gelesen. Es ist zu schwer zu verstehen. Wenn jemand mir die kleine Beispiele zeigen kann, es ist leicht für mich zu verstehen.



  • Einen Thread ( Worker Thread ) kannst du mit den Funktionen _beginthread ( C Runtime ) oder AfxBeginThread ( MFC ) erzeugen. Diesen Funktionen gibst du einen Funktionszeiger mit der deine Threadfunktion darstellt.

    Beispiele hierzu findest du in der MSDN zu den entsprechenden Funktionen oder z.B. hier: http://www.codeproject.com/threads/usingworkerthreads.asp



  • danke tvdog

    studierst du noch oder schon arbeiten



  • Hello tvdog

    ich habe schon probiert.Und es klappe doch noch nicht.Zwar ich habe noch einen Fehler getroffen.

    error c2065:"AfxBeginnThread": nichtdeklarierter Bezeichner!

    Kannst du mir weiter hilfen??



  • Entweder hast du einen Schreibfehler drin, denn die Funktion heisst : "AfxBeginThread" ( mit einem 'n' ) oder dir fehlen die MFC - Includes. ( Ist dein Projekt denn ein MFC - Projekt ? ). Wenn dein Projekt nix mit der MFC zutun hat, dann nimm die _beginthread - Funktion. Die ist in der C-Runtime von Visual-Studio drin.

    BTW:
    Studieren ist leider schon eine Weile her :(. Bin schon eine Weile im Arbeitsleben. Macht aber auch Spaß 🙂

    Gruß tvdog



  • Probier mal die Funktion CreateThread. Die geht auch wenn du keine MFC benutzt.


  • Administrator

    Auch zu empfehlen, sind die MSDN Artikel und weiterführende Links/Informationen:
    MFC - AfxBeginThread
    WinAPI - CreateThread

    Grüssli


  • Mod

    Dravere schrieb:

    Auch zu empfehlen, sind die MSDN Artikel und weiterführende Links/Informationen:
    MFC - AfxBeginThread
    WinAPI - CreateThread

    Grüssli

    Man sollte CreateThread niemals verwenden wenn auch die CRT im Spiel ist. Man sollte immer dann die CRT Funktion _beginthread(ex) verwenden.



  • liliangjie schrieb:

    void 59Dlg::OnMessen()
    ...
    

    Seit wann dürfen Klassennamen mit einer Ziffer anfangen? 😉



  • Ich habe mit MFC zu tun...
    Vieleicht habe ich doch noch Schreibenfehler gemacht.
    Ich habe selbst auch einige kleine Beispiel geschrieben,es geht doch noch nicht.
    Ich muss morgen wieder mal probieren.

    Bei mir ist ein bisschen schlimm,gibt es zur zeit noch keine Internetanschluss fuer mich.

    Fuer die Funktion mit Ziffern anfang,wusst ich noch nicht.Damals habe ich den Code von meine Programm ausgeschint.Und ich habe auch kleinigkeit veraedert.Danke fuer die Hinweise...

    Wenn ich klappt noch nicht,dann melde ich wieder an euch.

    Bis morgen.



  • Habe ich wieder Problem bei AfxBeginThread getroffen.

    Der Compeiler zeigt die Fehleranmeldung:

    Error C2665: 'AfxBeginThread':Durch keine der 2 Überladungen kann Parameter 1 von Typ 'unsigned int (void*)' konvertiert werden!
    Der Fehlermeldung kommt nur,wenn ich einen Thread in meine Messprogramm schreiben.

    Wenn ich einen neuen MFC-Projekt erstelle,und dazu einen Thread schreiben.Der Compeiler zeigt keine Fehleranmeldung.So fand ich,es war ganz komisch....

    Ich weiss nicht wie kann dass Problem klappen?


Anmelden zum Antworten