Форум программистов, компьютерный форум CyberForum.ru

Многопоточность в вычислениях - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужна помощь, чтобы разобраться в несложной программе (последовательность) http://www.cyberforum.ru/cpp-beginners/thread370156.html
Вот задание: Дана последовательность целых чисел, за которой следует 0. Найти среднее арифметическое этой последовательности. Ну и вот собственно мой вариант кода программы: #include <conio.h> #include <stdio.h> #include <math.h> #include <iostream.h> void main(void) { int f,x,n,s;
C++ Помогите написать простейшую программу Доброго времени суток! Помогите пожайлуста написать простую программу на С++, без использования массива: "дана последовательность n, целых чисел. имеется ли в последовательности этих чисел два подряд идущих нулевых члена?" http://www.cyberforum.ru/cpp-beginners/thread370139.html
Символьная строка C++
Подскажите алгоритм который будет вычислять количество слов больше 4 элементов в символьной строке
C++ Найти максимальный элемент массива и его номер
Составить программу записи в массив В номеров четных элементов массива А. Дан одномерный массив состоящий из различных целых чисел. Найти максимальный элемент массива и его номер.
C++ Как рисовать в С++ ? http://www.cyberforum.ru/cpp-beginners/thread370101.html
Здравствуйте. Передо мной такая задача. Надо численно решить систему уравнений в Visual Studio 2008 и нарисовать разные графики и анимацию. Мне сказали, что оконный интерфейс делается "в платформе Windows Form среды Visual Studio" или "на платформе Windows Form среды Visual Studio". Даже не знаю, как это правильно произнести, так как сам впервые услышал. Можете посоветовать, где можно об этом...
C++ Полезная длина строки #include <iostream> #include <string.h> using namespace std; int main () { int wdcount = 0; char str1 = ""; char str2 = ""; char newc, oldc; freopen ("input.txt", "r", stdin); подробнее

Показать сообщение отдельно
titans2011
295 / 256 / 43
Регистрация: 27.09.2010
Сообщений: 1,058

Многопоточность в вычислениях - C++

21.10.2011, 17:16. Просмотров 553. Ответов 3
Метки (Все метки)

Привет всем. Написал такой код.
Код
#include <iostream>
#include <algorithm>
#include <process.h>
#include <stdio.h>
using namespace std;

const int N=10;//задаётся число величины массива
int arr[N];
int nn=0;  //Перебираемые числа для первого потока
int nn1=0; //Перебираемые числа длявторого потока
int f1=0, f2=0;  //Флаг передачи числа (если оба равны нулю, то вызывается вычисление, если нет, то ждём, пока потоки обнулят флаги)
///////////////////////////

void Thread( void* pParams )
  { 
	int h=N/2; //Счётчик индекса в массиве
	
    int k=0;   //Флаг простого числа
	while (h<N)
	{
		cout<<"In cycle2 h="<<h<<"\n";
		if (f2==1){
		for ( int j=2; j<=nn/2; j++)
		{
			if (nn%j==0)
			{
				k++;

			}
		}

		if (k==0)
		{
			arr[h]=nn;
			h++;
			f2=0; //заполнил элемент, можно продолжать
		}
		k=0;
		
		}//запирается флагом
	 
	}
  }

//////////////////////////
int main(){
	
	
	for (int j=0; j<N; j++)
	{
		arr[j]=0;

	}
    
	/////////////////////////////
	int h=0; //Счётчик индекса в массиве
	//int nn=0;  //Перебираемые числа
    int k=0;   //Флаг простого числа
	while (h<N/2)
       
	{
		cout<<"In cycle1 h="<<h<<"\n";
		if (f1==1){
		for ( int j=2; j<=nn/2; j++)
		{
			if (nn%j==0)
			{
				k++;

			}
		}

		if (k==0)
		{
			arr[h]=nn;
			h++;
			f1=0;

		}
		k=0;
		}
		
		if (f1==0 && f2==0)
		{
			nn+=2;
			nn1=nn-1;
			f1=1; f2=1;
		_beginthread( Thread, 0, NULL );
		}


	}
	
	////////////////////////////
	int y=0;
	for (int j=0; j<N; j++)
	{
		cout<<arr[j]<<"\t ";
		if (y<9){
			y++;
		} else{
			cout<<endl;
			y=0;
		}

	}

	return 0;
}
Смысл таков. Просто попробовать многопоточность. Создаётся глобальный массив. Он делится пополам. Первая часть один поток заполняет, другая часть второй. Задача простая, заполнить его простыми числами (Я знаю, что он не будет отсортирован, позже хотел применить STL для сортировки). В общем компилятор не ругался. Программа впала в бесконечность, как я понял, из-за того, что второй поток попросту не отрабатывает. В чём может быть ошибка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru