znaczacy > comp.lang.* > comp.lang.c

arekle (09.01.2020, 13:32)
Dane[] dane = new Dane[daneCount];
Parallel.ForEach(Partitioner.Create(0, daneCount), (przedzial) =>
{
for (int i = przedzial.Item1; i < przedzial.Item2; i++)
{
dane [i] = new Dane(i);
}
});

Czy to jest bezpieczne?
heby (09.01.2020, 22:03)
On 09/01/2020 12:32, arekle wrote:
> Czy to jest bezpieczne?


A czy konstruktor Dane jest pure? A czy allokator jest bezpieczny?
arekle (10.01.2020, 11:27)
> On 09/01/2020 12:32, arekle wrote:
>> Czy to jest bezpieczne?

> A czy konstruktor Dane jest pure? A czy allokator jest bezpieczny?


Tak.
Chodzi mi o samo przypisanie do konkretnego indeksu tabeli.
Każdy wątek przypisuje swój indeks w tabeli. Wydaje mi się że jest
bezpiecznie.
heby (10.01.2020, 21:57)
On 10/01/2020 10:27, arekle wrote:
> Chodzi mi o samo przypisanie do konkretnego indeksu tabeli.
> Każdy wątek przypisuje swój indeks w tabeli. Wydaje mi się że jest
> bezpiecznie.


Znowu ciezkie pytanie. A czy ktoś inny tą tablicę czyta? Bo możliwe że
nie masz gwarancji że zapisy mają określone cechy, np kolejność.

Jesli tą tablicę wypełniasz i tyle to powinno być bezpieczne.
arekle (12.01.2020, 10:37)
> On 10/01/2020 10:27, arekle wrote:
>> Chodzi mi o samo przypisanie do konkretnego indeksu tabeli.
>> Każdy wątek przypisuje swój indeks w tabeli. Wydaje mi się że jest
>> bezpiecznie.

> Znowu ciezkie pytanie. A czy ktoś inny tą tablicę czyta? Bo możliwe że
> nie masz gwarancji że zapisy mają określone cechy, np kolejność.
> Jesli tą tablicę wypełniasz i tyle to powinno być bezpieczne.


Zadaniem kodu jest szybkie /równoległe/ wypełnienie tabeli danymi które
potem będą przetwarzane już synchronicznie.
Kolejność w tabeli ma istotne znaczenie dlatego używam tabeli i jej
indeksów zamiast ConcurrentBag.
Podobne wątki