Zrównoleglenie pędli do while

Zrównoleglenie pędli do while
D1
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

W jakis sposob mam zrownoleglić pętle do while na 8 wątków

Kopiuj
void quicksort2(int tablica[], int left, int right)
{
	int tab = tablica[(left + right) / 2];
	int x;
	int i = left;
	int j = right;
	do
	{

		while (tablica[i] < tab)
			i++;
		while (tablica[j] > tab)
			j--;
		if (i <= j)
		{
			x = tablica[i];
			tablica[i] = tablica[j];
			tablica[j] = x;
			i++;
			j--;

		}
	}
	while (i <= j);
	if (j > left) quicksort(tablica, left, j);
	if (i < right) quicksort(tablica, i, right);
}
edytowany 1x, ostatnio: flowCRANE
kq
Jakie jest pytanie?
Bartosz36
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:348
0

Chodzi Ci o std::thread? Po drugie, co masz na myśli mówiąc zrównoleglić? Chcesz, aby ta sama pętla wykonywała się na ośmiu wątkach, jeśli dobrze rozumiem. Ale co każdy z nich miałby robić z tą pętlą?
Ogólnie mogę Ci jedynie doradzić, byś użył std::thread, dla każdego z nich podając lambdę z tą pętlą, lub jej fragmentem (funkcją), który chcesz aby ten wątek wykonał. To już zależy od Ciebie, co będzie się w tych wątkach działo.


ExtendedVector czyli std::vector<T> z wygodą List<T> z .NET (ForEach, FindAll, itd...)
kq
W tagach jest openmp
rrowniak
  • Rejestracja:ponad 6 lat
  • Ostatnio:3 miesiące
  • Postów:82
0

Możesz wykorzystać std::async + std::future + lambda. Ta kombinacja wydaje się być najprostszym sposobem realizacji Twojego zadania.


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.