Problem mit _beginthread in einer Schleife



  • Morgen

    habe folgendes Problem:

    Ich hab einen while-Schleife und in der ruf ich _beginthread() auf, mit einer Variablen in der ein Pfad steht, wenn ich die Schleife durchlaufe, wird arbeitet der Thread aber immer nur mit der letzten Pfadangabe, woran liegt das?

    Hier noch der Code:

    int main(int argc, char* argv[])
    {
    	int a;
    
    	FILE * ini;
    	char str1[100];
    	CString str;
    
    	ini = fopen("C:\\dir.ini", "r");
    
    	int counter = 0;
    
    	while (!feof(ini))
    	{
    		fscanf(ini, "%s\n", str1);
    		printf("%s\n", str1);
    		if (str1[0] != '[')
    		{
    
    			str = str1;
    			str.Delete(0, 5);
    
    			_beginthread( Thread_Watch, 0, (void*)(LPCTSTR)str);
    			_beginthread( Thread_Acc, 0, (void*)(LPCTSTR)str);
    			counter++;	
    			//AfxMessageBox(str);
    		}
    	}
    
    	printf("%d\n", counter);
    
    	cin >> a;
    	fclose(ini);
    	////////////////////////////////////////////////////////////
    	return 0;
    }
    

    Lg Andreas



  • Von str existiert bei dir 1 object, d.h. der string liegt 1 mal im speicher.
    Du gibts nun nen zeiger auf diesen string an alle deine threads, d.h. sie greifen alle auf den SELBEN speicher zu.



  • Danke jetzt läufts!


Anmelden zum Antworten