Jedna zmienna - wiele wątków

0

Hi,
Mam pytanie: jeśli kilka wątków próbuje w jakiś sposób wpłynąć na tą samą zmienną to może mieć to bardzo niemiłe konsekwencje - ok!
Mam jednak pytanie czy może się coś niedobrego stać, gdy kilka wątków chce jedynie pobrać tą samą zmienną (bez jej modyfikacji) i wykorzystać ją do przemnożenia przez inną (niezależną) zmienną i zapisać wynik również do niezależnej zmiennej?

Chodzi mi o coś takiego:

double vectorX[N]; //tablica o rozmiarze N ze wspólnymi zmiennymi
double results[M];   //tablica o rozmiarze M gdzie będą zapisane wyniki sumy mnożeń (iloczynu skalarnego)
Object objects[M];

class Object
    {
    public:
        Object(){vector = new double[N];}
        double* vector; //wewnętrzny wektor
        double* vectorX; //wskaźnik do zewnętrznego wektora
        double* result; //wskaźnik do zmiennej, w której będzie zapisany wynik iloczynu skalarnego

        set_result_and_ptr_to_var(double* result, double* ptr_to_vector)
            {
            this->result = result;
            vectorX = ptr_to_vector;
            }
        void set_result()
            {
            for(int i=0; i<N; i++)
                *result += vectorX[i]*vector[i];
            }
    };
//...
for(int i=0; i<M; i++)
    objects[i].set_result(&results[i], vectorX);

for(int i=0; i<M; i++)
    objects[i].set_result();    //**chciałbym, żeby każdy obiekt wywoałał się w innym wątku**
    /*
    Pytanie: czy jeśli każdy obiekt pobiera dane z tej samej tablicy (variables) -> mnoży je przez swoje
    zmienne (wektor) -> a następnie zapisuje do wspólnej tablicy, ale do indywidualnego dla każdego obiektu pola, jest prawidłowe?
    Czy wywołanie tej funkcji w oddzielnym wątku będzie prawidłowe? Czy jest tu jakieś niebezpieczeństwo?
    */
2

Nic złego się wtedy nie stanie, ponieważ wartość zmiennej nie jest zmieniana.

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