2016-04-21 1 views
1

Ich entschuldige mich, wenn diese Frage einfach aussieht. Ich lerne immer noch über Threads. Ich habe bereits versucht, hier nach einer Lösung zu suchen, habe aber keine gefunden.Programm zum Erstellen einer Anzahl von Threads basierend auf Benutzereingabe nicht funktioniert (Cin)?

Ich versuche, mein Programm zu erstellen, eine Reihe von Threads basierend auf Benutzereingabe zu erstellen (Beispiel: "cin >> 5" erstellt 5 Threads), aber es sagt das "i" in "Threads myThreads [i] "Muss ein konstanter Wert sein. Der Code ist unten:

Irgendwelche Ideen, wie dieser Abschnitt behoben werden kann? Ich habe ein paar verschiedene Wege ausprobiert, aber sie haben bisher nicht funktioniert. Vielen Dank.

+1

Haben Sie versucht, 'std :: vector' zu verwenden? (z. B. 'std :: vector myThreads (numThreads);') –

Antwort

1

Es gibt kein Problem mit Multithreading. Das Problem ist ein statisches Array, das Sie als dynamisches Array verwenden.

so etwas wie dieses Versuchen:

thread* myThreads = new thread[numThreads]; 

Mehr über dynamische Speicher in C++: http://www.cplusplus.com/doc/tutorial/dynamic/

UPD von James Adkison: undichte nicht Speicher zu vermeiden Vergessen Sie Ihre Array delete[].

+0

Das ist 'C++' warum nicht empfehlen, 'std :: vector' zu verwenden? Es ist normalerweise eine gute Idee, sich nicht direkt mit der dynamischen Speicherzuweisung zu befassen (z. B. verwenden Sie "std :: unique_ptr" und "std :: make_shared"). –

+0

Es funktioniert jetzt. Vielen Dank. Ich schätze es sehr. –

+1

@G_Man Stellen Sie sicher, dass Sie wissen, dass dieser Code nicht ausnahmesicher ist und Ressourcen verlieren wird, wenn 'delete []' nicht ausgeführt wird. –

Verwandte Themen