Witam,
Programuję swoją własną aplikacje testującą komputer w VS 2013 i mam problem z obsługą wielowątkowości.
W tym momencie (uczę się samodzielnie) korzystam z biblioteki standardowej thread.
Czy istnieje możliwość przypisania kilku wątkom, liczenie i wykonywanie kodu jednej funkcji? (te same polecenia, te same argumenty)
Przykładowo:
Jeśli do wykonywania tego kodu:
{
long int ilosc = 0;
for (long long int n = 1; n <= 75000000; n++)
{
if (czy_pierwsza(n))
{
ilosc++;
}
else
{
continue;
}
}
//cout << "\nZnaleziono " << ilosc << " liczb pierwszych z zakresu od 1 do 75 000 000.";
}
bool czy_pierwsza(unsigned long int n)
{
unsigned long int q, r, d;
if (n < 3 || (n & 1) == 0)
return n == 2;
for (d = 3, r = 1; r != 0; d += 2)
{
q = n / d;
r = n - q * d;
if (q < d)
return true;
}
return false;
}
na liczby pierwsze spróbuje przypisać więcej niż jeden wątek to aplikacja albo się wiesza albo działa bardzo wolno.
Czy da się coś wymyślić aby np ten kod wykonywało 8 wątków?
Dziękuję z góry za informacje.
Pozdrawiam.
thread_local
. (To jest słowo kluczowe).