Zrównoleglenie pędli do while

0

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

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);
}
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.

0

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

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