Announcement

Collapse
No announcement yet.

ThreadStart

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ThreadStart

    Guten Abend

    drei Fragen:
    1. wie kann ich den folgenden Thread öfter z.B. in der while-schleife aufrufen?

    2. welche Bedeutung hat die Instanz-Variable bei einem Thread (wenn er nicht statisch ist)?

    Code:
    ThreadStart^ threadDelegate = gcnew ThreadStart( w, &Work::DoMoreWork );
    3. warum wird bei folgendem Code zuerst immer die ThreadClassMethode abgearbeitet und anschließend erst die while-Schleife - ich dachte das müsste ""gleichzeitig" funktionieren?

    Code:
    ref class ThreadClass
    {
    public:
       static void ThreadClassMethod()
       {
          /// Do work 
    	   Console::WriteLine("jetzt arbeitet der Thread."); 
    	  
       }
    
    };
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int i=0; 
    	int zaehler=0; 
    
    	ThreadClass ^ objclass = gcnew ThreadClass; 
    	ThreadStart^ mThread = gcnew ThreadStart(&objclass->ThreadClassMethod);
    	Thread^ newThread = gcnew Thread(mThread);
    	newThread->Start();				
    
    	while(zaehler++<10)
    	{
    		Console::WriteLine("zaehler: {0}, i: {1}", zaehler, i); 
    	}
    
    	return 0;
    }
    vielen dank für die beantwortung

    saoirse

  • #2
    Salve!

    Threads arbeiten nur solange wie du es ihnen sagst.
    Entweder immer( while(1) ) oder wie in deinem fall nur 1x.
    Threads verfügen über ein flag, welches ihnen anzeigt ob sie beendet
    werden sollen. Dieses muß du in deiner schleife auswerten.

    static void ThreadClassMethod()
    {
    /// Do work
    while( ende != false )
    {
    Console::WriteLine("jetzt arbeitet der Thread.");
    // je nach bedarf schlafen legen, die anderen wollen
    // ja auch noch arbeiten
    Sleep(...);
    }

    }

    Da Threads nicht statisch sind, wird bei der erzeugung ein adresszeiger
    auf die hauptfunktion benötigt. Diese wird vom Kontructor 1x aufgerufen.
    Den rest muß diese funktion erledigen.

    mfg
    Fred

    Comment

    Working...
    X