Привет. Изучаю OpenMp, и при выполнении простейшего задания появились вопросы.
Я запускаю 8 потоков и хочу что бы если четный поток - записать цифру 1 в массив, под номером потока. Написал такую программу, но не понимаю почему std::cout << thread%2 << std::endl; выводит правильные значения, а уже на следующей строке if (thread%2 ==0) условие уже не отрабатывает? Это видно, когда в критическом блоке вывожу весь массив. Как исправить? Спасибо.
int main()
{
	int i;
	int threads = 8;
	int thread;
	int table[8] = { 0,0,0,0,0,0,0,0 };
	omp_set_num_threads(8);
#pragma omp parallel 
	{
		thread = omp_get_thread_num();
		threads = omp_get_num_threads();
		for (i = thread;i < threads;i += threads) {
			std::cout << thread%2 << std::endl;
			if (thread%2 ==0) {
				table[thread] = 1;
			}
		}
#pragma omp critical 
		{
			for (i = thread;i < threads;i += threads)
			{
				std::cout << table[i] << std::endl;
			}
		}
		
	}
}