Tworzenie wątków oraz obiektów w pętli

0

Cześć, pisząc brute forcera mam problem z utworzeniem kilku obiektów oraz wątków jednocześnie.
Moja klasa nazywa się Guesser. A watki i obiekty tworze w ten sposób.

  for (int i = 0; i < 10; i++)
            {
                Guesser guesser = new Guesser();
                Thread worker = new Thread(guesser.startBruteForce);
                worker.Start();
            }

1.Kod się kompiluje lecz wygląda jakby każdy kolejny utworzony obiekt był identyczny. ( w konstruktorze mam wywołanie funkcji mieszającej tablice i wypisywanie jej ).
Jaki jest lepszy sposób tworzenia obiektów w pętli aby były one rożne od siebie?
2.Kolejnym moim pytanie jest tworzenie wątków - czy po wyjściu z pętli będzie utworzona ilość wątków równa liczbie iteracji czy tez wszystkie poprzednie zostaną zastąpione po utworzeniu kolejnego?
3. Jak uruchomić wątek na GPU?

Pozdrawiam

2

Kod się kompiluje lecz wygląda jakby każdy kolejny utworzony obiekt był identyczny.

Najprawdopodobniej w Twoim konstruktorze klasy Guesser tworzysz za każdym razem nowy generator liczb losowych, prawda?

Generator liczb losowych w C# bierze swój seed z aktualnego czasu systemowego, stąd jeśli utworzysz ich wiele jeden po drugim, będą one miały identyczny stan (a zatem będą zwracały identyczne pseudo-losowe liczby) - powinieneś stworzyć jeden generator (np. przed pętlą) i przekazywać go do konstruktora Guesser.

Jak uruchomić wątek na GPU?

Poczytaj o OpenCL oraz CUDA - nie jest to jednak łatwa sprawa i nie sprowadza się do niczego w stylu thread.setProcessor(GPU); ;-)

Programowanie GPU to zupełnie inna działka i rządzi się całkowicie odmiennymi zasadami niż CPU.

0

Mój generator liczb losowych jest statyczny. Problemu tego nie ma gdy tworze obiekty oraz watki poza pętlą

1

Pokaż co tam masz w tym startBruteForce()

2

Nie używaj Thread bezpośrednio - uzywaj TPL i Task.

0

Pokaż kod klasy Guesser bądź, ogólnie, przygotuj MRE.

0
Patryk27 napisał(a):

Pokaż kod klasy Guesser bądź, ogólnie, przygotuj MRE.

Sprawa juz rozwiazana - dodalem obiekty do listy

1 użytkowników online, w tym zalogowanych: 0, gości: 1