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