tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
Like Tree1Danke
ERLEDIGT
JA
ANTWORTEN
16
ZUGRIFFE
817
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    WingMan81 WingMan81 ist offline Mitglied
    Registriert seit
    Sep 2009
    Beiträge
    14
    Hallo alle zusammen,

    nach langem zögern und zittern vor den ach so bösen Pointern habe ich mich nun doch entschlossen auch die Sprache C mal in Angriff zu nehmen. Siehe da es klappt sogar halbwegs

    Ich bin nun beim Thema Threads angelangt und habe dort ein Phänomen das ich mir selber nicht erklären kann. Wahrscheinlich ist es mal wieder ganz einfach wenn man es denn erklärt bekommt.
    Also:

    Soweit ich das verstanden habe:
    pthread_create() erstellt und startet den Thred.
    pthread_join() Wartet mit dem Main Thread auf Beendigung der anderen Threads wenn es denn nötig ist.

    Ich habe mir nun folgendes gebastelt:
    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    
    int main()
    {
        pthread_t t1, t2;
        
        createThread(&t1);
        createThread(&t2);
        
        pthread_join(t1, NULL);
        pthread_join(t2, NULL);
        return 0;
    }
     
    void createThread(pthread_t *p)
    {
        static int counter = 0;
     
        if(counter%2 == 0)
            pthread_create(p, NULL, threadOne, NULL);
        else
            pthread_create(p, NULL, threadTwo, NULL);   
        
        counter++;  
    }
     
    void *threadOne()
    {
        int i;
        for(i = 0; i < 200; i++)
            printf(" - ThreadOne %d", i);
        return NULL;
    }
     
    void *threadTwo()
    {
        int i;
        for(i = 0; i < 100; i++)
            printf("ThreadTwo  %d", i);
        return NULL;
    }

    Wenn ich es so implementiere läuft alles wunderbar, sprich die Threads wechseln sich auch ab.

    Nun zum Verständnis-Problem: Ziehe ich das pthread_join mit in die Funktion die die Thread startet, dann läuft erst der eine Thread bis zum Ende und erst dann beginnt der zweite Thread mit der Arbeit.
    Also wenn es so aussieht:
    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
    int main()
    {
        pthread_t t1, t2;
        
        createThread(&t1);
        createThread(&t2);
        return 0;
    }
     
    void createThread(pthread_t *p)
    {
        static int counter = 0;
     
        if(counter%2 == 0)
            pthread_create(p, NULL, threadOne, NULL);
        else
            pthread_create(p, NULL, threadTwo, NULL);   
        
        counter++;
            pthread_join(*p, NULL);
    }
     
    void *threadOne()
    {
        int i;
        for(i = 0; i < 200; i++)
            printf(" - ThreadOne %d", i);
        return NULL;
    }
     
    void *threadTwo()
    {
        int i;
        for(i = 0; i < 100; i++)
            printf("ThreadTwo  %d", i);
        return NULL;
    }
    Nun die ach so beliebte Frage: WIESO IST DAS SO?

    Vielen Dank und viele Grüße,
    WingMan

    PS: Gibt es keine Code-Tags oder habe ich die übersehen?
    Geändert von WingMan81 (25.09.09 um 09:38 Uhr)
     

  2. #2
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Zitat Zitat von WingMan81 Beitrag anzeigen
    PS: Gibt es keine Code-Tags oder habe ich die übersehen?
    Moin und Willkommen,

    doch, die gibt es: nimm' im Editor den Button mit der '#' oder schreibe händisch "[_CODE] ... [_/CODE]" (OHNE die Unterstriche) in Deinen Post!

    Zu Deinem Problem kann ich Dir so aus dem Stand heraus nix sagen, zumal es wirklich schwer zu lesen ist

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  3. #3
    WingMan81 WingMan81 ist offline Mitglied
    Registriert seit
    Sep 2009
    Beiträge
    14
    Damit wäre das erste Problem ja bereits gelöst Danke!
     

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von WingMan81 Beitrag anzeigen
    Nun die ach so beliebte Frage: WIESO IST DAS SO?
    Weil du es so programmiert hast. Und weil es logisch ist.

    Schau dir doch an was du machst: du rufst im Hauptthread deiner Anwendung die createThread Funktion auf, startest einen Thread und gleich darauf wartest du mit pthread_join auf die Beendigung des Threads. Das heißt die Funktion createThread kehrt natürlich nicht zurück bevor der Thread nicht fertig abgearbeitet wurde.

    Gruß

    PS: Noch besser wäre es die passenden Code-Tags zu benutzen: [c]...[/c] für C-Code [cpp]...[/cpp] für C++ usw.
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    WingMan81 WingMan81 ist offline Mitglied
    Registriert seit
    Sep 2009
    Beiträge
    14
    Ahhhhh,

    ich hatte es so verstanden, das pthread_join() lediglich dafür eingesetzt wird damit nicht der "Main-Thread" beendet wird ohne das die anderen Threads zuvor beendet wurden. Ich hatte es nicht so verstanden das dann der Main-Thread beim join hängen bleibt!

    Das ging wahnsinnig schnell mit den Antworten und direkt alles geklärt!

    RESPEKT und vielen DANK! Aber: Ich kann euch schon jetzt verraten das da noch weitere dumme Fragen folgen werden

    Viele Grüße
    WingMan

    Nur so nebenbei: Mir fällt auch gerade auf das dies nun ein anderer Nachrichten-Editor ist als der den ich hatte beim erstellen des Threads... Da gab es nämlich keine Button wie "#" oder eine Möglichkeit die Schriftart zu ändern. Seltsam...
     

  6. #6
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von WingMan81 Beitrag anzeigen
    Nur so nebenbei: Mir fällt auch gerade auf das dies nun ein anderer Nachrichten-Editor ist als der den ich hatte beim erstellen des Threads... Da gab es nämlich keine Button wie "#" oder eine Möglichkeit die Schriftart zu ändern. Seltsam...
    ... hm, ein Glitch in der Matrix ?
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  7. #7
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Zitat Zitat von WingMan81 Beitrag anzeigen
    Nur so nebenbei: Mir fällt auch gerade auf das dies nun ein anderer Nachrichten-Editor ist als der den ich hatte beim erstellen des Threads... Da gab es nämlich keine Button wie "#" oder eine Möglichkeit die Schriftart zu ändern. Seltsam...
    hmm ... was meinst mit "dies"

    Falls Du den Editor meinst, den Du über den "ÄNDERN"-Button aufrufst, dann ist dass leider allerdings so. Hier musst Du dann ggf. mit HTML-Tags arbeit, also bspw. [_b] und [_/b] für Fettschrift (wiederum ohne die Unterstriche).

    Es gibt übrigens rechts neben dem '#'-Button auch eigene Button für HTML- und PHP-Code Jedoch leider (noch ) nicht für JAVA oder C/C++. Insoweit hat deepthroat mit seinem Hinweis völlig Recht !!

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  8. #8
    WingMan81 WingMan81 ist offline Mitglied
    Registriert seit
    Sep 2009
    Beiträge
    14
    Oh, den Hinweis von Deepthroat mit den [c] tags habe ich doch glatt überlesen Werde ich aber gleich noch ändern.

    Mit *dies* war der Editor gemeint den ich sehe wenn ich auf Antworten klicke. In dem sind alle Möglichkeiten zum formatieren vorhanden. Beim Ändern bekam ich den gleichen Editor wie beim erstellen des Threads. Da konnte ich lediglich Text schreiben und unten ein Beitragssymbol auswählen.

    Viele Grüße,
    WingMan
     

  9. #9
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von vfl_freak Beitrag anzeigen
    Falls Du den Editor meinst, den Du über den "ÄNDERN"-Button aufrufst, dann ist dass leider allerdings so.
    In beiden Editor-Varianten gibt es den #-Button. Jedenfalls bei mir.
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  10. #10
    WingMan81 WingMan81 ist offline Mitglied
    Registriert seit
    Sep 2009
    Beiträge
    14
    Habe es gerade auch nochmal ausprobiert. Wenn ich jetzt einen neuen Thread eröffne sehe ich auch den richtigen Editor
    Seltsam, bin mir 100%ig sicher das das beim erstellen dieses Threads nicht der Fall war, da ich ja nach den Code-Tags gesucht habe. Naja, vielleicht mal wieder mein Firefox oder so, keine Ahnung!? Hauptsache nun klappts

    Beim nächsten Thread werde ich direkt [C] Tags verwenden, versprochen
     

  11. #11
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Zitat Zitat von deepthroat Beitrag anzeigen
    In beiden Editor-Varianten gibt es den #-Button. Jedenfalls bei mir.
    Moin,

    aha - bei mir aber nun gar nicht .....
    Es gibt hier den gleichen Editor für "Antworten", "Zitieren" und "Neuer Thread" sowie einen sehr Vereinfachten beim Button "Ändern" (von eigenen Posts) ..... vgl. Anlagen

    Gruß
    Klaus
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken C Threads und Beginner = Verständnis-Problem-button_antworten_zitieren.jpg   C Threads und Beginner = Verständnis-Problem-button_aendern.jpg  

     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  12. #12
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von vfl_freak Beitrag anzeigen
    aha - bei mir aber nun gar nicht .....
    Es gibt hier den gleichen Editor für "Antworten", "Zitieren" und "Neuer Thread"
    Und den kann man in 2 Modi betreiben. Das meinte ich eigentlich mit den 2 Varianten (des gleichen Editors).
    Zitat Zitat von vfl_freak Beitrag anzeigen
    sowie einen sehr Vereinfachten beim Button "Ändern" (von eigenen Posts)
    Den würde ich ja nicht mal als Editor bezeichnen - obwohl man damit natürlich seine Beiträge editieren kann...

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  13. #13
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Zitat Zitat von deepthroat Beitrag anzeigen
    Und den kann man in 2 Modi betreiben. Das meinte ich eigentlich mit den 2 Varianten (des gleichen Editors).
    Aha ....
    Und wo stelle ich solche Modi ein

    Zitat Zitat von deepthroat Beitrag anzeigen
    Den würde ich ja nicht mal als Editor bezeichnen - obwohl man damit natürlich seine Beiträge editieren kann...
    "Editieren KANN"
    Dumm gefragt: womit denn sonst? Das liegt doch automatisch auf dem Button ....

    Und sowas am Freitag Mittag .....

    Danke im voraus für event. Infos!
    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  14. #14
    WingMan81 WingMan81 ist offline Mitglied
    Registriert seit
    Sep 2009
    Beiträge
    14
    Oh man, was habe ich da angerichtet? Und das direkt mit dem ersten Beitrag, wartet erstmal ab wenn ich zu den schwereren Sachen komme
     

  15. #15
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    ja, das ist hier so üblich - da beginnt ein Hauen und Stechen .....

    Aber derartige Infos sind ja schließlich für alle interessant - auch für ältere User, wie mich ....
    und bevor jetzt weitere Post kommen: gemeint ist natürlich nur die Anzahl meiner Beiträge

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

Ähnliche Themen

  1. Matrix Verständnis-Problem
    Von blutsvente im Forum Cinema 4D
    Antworten: 4
    Letzter Beitrag: 20.09.10, 15:59
  2. Verständnis-Problem: Zweidimensionale ArrayList
    Von robbob im Forum Java Grundlagen
    Antworten: 3
    Letzter Beitrag: 03.05.10, 14:26
  3. C++ Verständnis Problem!!
    Von Foxgame im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 20.11.07, 22:45
  4. verständnis PROBLEM
    Von Tageslicht im Forum PHP
    Antworten: 4
    Letzter Beitrag: 11.12.04, 10:43
  5. Verständnis Problem mir DB Update
    Von xtraMen im Forum PHP
    Antworten: 4
    Letzter Beitrag: 26.09.04, 12:56

Stichworte