]]>
]]>
IT Coders
Логин:
Пароль:
  ]]>Войти]]> ]]>Регистрация]]> ]]>Забыли?
 
 
СКОРОСТЬ ->
 
КАЧЕСТВО ->
 
УСПЕХ...
Акксессуары для iPhone, iPad, iPod touch и Samsung Galaxy :: iHave Интернет-магазин InFabrica - техника для Вас Radhika - интернет-магазин специй, вегетарианских и диетических продуктов Свадебный журнал WedInMoscow Кинохабар - Интернет-гипермаркет фигурок персонажей из фильмов, кино сувениров и прочего околокиношного хабара Персональный web-сайт Королёвой Надежды Михайловны Портал школы "Золотое Сечение" Официальный сайт компании "Белсис" СДЕЛАНО БОГОМ - Интернет-журнал Официальный сайт Льва Лещенко Техно Офис - Компьютерный интернет-магазин Персональный web-сайт Богословской Оксаны
 

Альтернативное содержимое

]]> ]]>
 
ВКонтакт Facebook Одноклассники Twitter Яндекс Livejournal Liveinternet Mail.Ru
Страницы: 1
Распаралелить программу Архив со старого форума компании IT Coders
Здравствуйте уважаемые форумчане!

Нужно распаралелить программу которая меняет местами столбцы 2-х мерного массива. Массив размером 10*10
Количество потоков - 5.
ОС- WindowsXP
IDE - MS Visual Studio 2008 C++

Вот я сделал её, но не приложу ума как распаралелить.
Код
#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
SetConsoleOutputCP (1251);

int mas[10][10];
int i,j,n=10,stolbec_a,stolbec_b,buf;

cout << "Массив случайных чисел 10*10\n";
cout << endl;


/*-----------------------------Ввод массива------------------------------------*/
for (i=0; i<n; i++) //строки
for (j=0; j<n; j++) //столбцы  
{mas[i][j]=rand()%50;}


/*--------------------------Вывод массива на экран-------------------------------*/
for (i=0; i<n; i++) //строки
{
for (j=0; j<n; j++) //столбцы
{cout << "a[" << i <<j << "]= " << mas[i][j] << "\t";}
cout << endl;
}

/*------------------------Выбор столбцов для перемещения------------------------*/
cout << "\nВведите номер столбца 'A' который вы хотите поменять местами с столбцом В\n";
cin >> stolbec_a;
cout << "Введите номер столбца 'B' (на место которого вы хотите поставить столбец А)\n";
cin >> stolbec_b;
if (stolbec_a >n && stolbec_b >n) 
{
cout << "Вы ввели недопустимые значения \n"; 
}
cout << "Вы хотите поменять местами столбец номер " << stolbec_a <<" с столбцом номер " << stolbec_b << endl;


/*------------------------Перемещиние столбцов------------------------*/
for (i=0; i<n; i++)
{
buf = mas[i][stolbec_a];
mas[i][stolbec_a] = mas[i][stolbec_b];
mas[i][stolbec_b] = buf;
}

/*--------------------------Вывод результата на экран-------------------------------*/
for (i=0; i<n; i++) //строки
{
for (j=0; j<n; j++) //столбцы
{cout << "a[" << i <<j << "]= " << mas[i][j] << "\t";}
cout << endl;
}


cin.get();
cin.get();
}


Пожалуйста, кто разбирается в ПАРАЛЛЕЛЬНОМ программировании, дайте совет, или хотябы ссылкой пните). Заранее Благодарен!
честно - идиотское задание на параллелизм. тут и распараллеливать то нечего. была ба какая нить сортировка хотяб...
ну что вижу. пусть каждый поток вполнит свою часть перестановки столбцов.
например:

первый поток:
for (i=0; i<2; i++) {
buf = mas[i][stolbec_a];
mas[i][stolbec_a] = mas[i][stolbec_b];
mas[i][stolbec_b] = buf;
}

...

пятый поток:
for (i=8; i<10; i++) {
buf = mas[i][stolbec_a];
mas[i][stolbec_a] = mas[i][stolbec_b];
mas[i][stolbec_b] = buf;
}
по работе с потоками смотри в msdn createThread. В твоем случае хватит только этой функции. в функцию потока передашь указатель на массив и номера строк колонки, которые Энный поток должен переставить. дальше просто создаешь 5 потоков с нужными параметрами. все.

но опять же скажу, что это все бредятина, ибо вполнение потока закончится практически моментально.
Согласен что бредятина! Но "приказ" есть "приказ"! Я примерно так и думал. Но мне сказали что может возникнуть проблема с доступом к памяти. Типа одновременно к массиву будут подключатся 5 потоков, хотя я лично не пойму в чём проблемма.

Спасибо большое попробую помучится, когда будет какой-то результат, отпишусь.
Оказывается что использовать функция CreateThread() есть смысл лишь тогда, когда в коде не используются стандартные функции библиотеки С, такие как например printf() или strcmp(). Проблемма в том что функции стандартной библиотеки С не предназначены для использования в Win32 АРІ, и для того чтобы создать поток необходимо во время создания и завершения потока выполнять некоторые действия, все эти действия уже включены в функцию _beginthreadex() для создания потока и _endthreadex() – для завершения потока. эти функции описаны в ргосеss.h (информация из методички)
эмм, у меня тут тоже есть вопросик небольшой(потоки особо не изучал, но интересно же)
вот допустим обычный тупо-поток я создаю так (в MFC)
Код
UINT proc2(LPVOID Param)
{
AfxMessageBox("proc2!");
return 0;
}

void CMyDlg::OnBnClickedOk() 
{
 AfxMessageBox("main proc");
 AfxBeginThread(proc2,this);
}

а что делать если нужен поток-член класса? того же диалога например(чтоб доступ получить ко всем данным)
для оных целей метод должен быть статическим, что по сути сразу исключает возможность доступа к полям, принадлежащим какому-то конкретному объекту(так как в статические методы не передаётся this). С другой стороны можно собственноручно передать в него this и тогда через него получать доступ к приватным полям класса
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)
Ваша корзина пуста
]]> ]]>
Ваша корзина пуста
]]> ]]>
]]> ]]>
]]>
 

]]>
© IT Coders, 2008 - 2024
Под управлением CMS 1c-bitrix
xvideo indian wife zeloporn.com call girls in munirka
sexy bf loading pornview.org www.desipapa..com
farm sex popsexy.net sex with stepmother
farmer sex indianpornvideos.me desi unseen.com
village auntys xnxx tubexo.info anti sex.com
tamilkamavideos youjizz.sex pornroids
perfect girl porn ruperttube.net bangla video panu
first time sex video xxxhindiporn.net kashmiri sexy girl video
xnnvideos indiansexmms.me xhamxter
love parameter 90 hentaimol.com straight shotacon hentai manga
desi sex wap xxxleap.com hot mom sex with son
reshma sex clips povporntrends.com xxnx.vidoes
indian horse sex gekso.info paksexvideo
honey moon xnxx pornindianhub.info saxy video free
xvideobhabhi freexxxporn.me www odia sexy in