Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализация многопоточности или помогите разобратьс, Чем отличаются стандарты...и... 
:(
    Опции темы
and_master
Дата 26.2.2007, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 26.2.2007

Репутация: нет
Всего: нет



Всем привет! Ребят, к вам пара дурацких вопросов... Я пишу программу очень ресурсоемкую и решил распараллелить вычисления на двухядерном компе... Много чего почитал, но не совсем разобрался вот в чем. 1. Как лучше реализовывать многопоточность - через MPI, API-функции, либо еще какие-либо функции... Во многих примерах совершенно различный код. Как вообще ситуация разворачивается с этим? И что из всего этого барахлишка лучше использовать? И еще вопросик очень важный для меня... Всем откликнувшимся заранее огромнейшее спасибо...
У меня программа следующего вида...
     
void main()
{
////
...
...
slau(....);
}

void slau(....)
{
/////// 1а   -ый кусочек кода----------
/////// 2а   -ый кусочек кода----------
/////// 3     -ый кусочек кода----------
/////// 1b   -ый кусочек кода----------
/////// 2b   -ый кусочек кода----------
}

Мне необходимо сделать следующее.... Идея распараллелить функцию...  1а и 1b полностью независимы и должны запускаться одновременно... Далее, когда они оба закончат первую часть работы должен произойти обмен данными в кусочке 3. И только после того, как 1а и 1b дождались друг друга и обменялись информацией необходимо продолжить их работу, также независимыми кусочками 2а и 2b.... 
То есть.... 1-ый поток..... (1а+  3  +2а) .....2-ой  -  (1b+  3  +2b).......3 - результат совместной работы... И еще...  если в функции создать два потока, то суммарно в программе будет 3 чтоли (+ поток основной программы)  






PM MAIL   Вверх
chaos
Дата 26.2.2007, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



если очень кратко то читай про

Код

CreateThread
WaitForMultipleObjects

PM WWW   Вверх
threef
Дата 26.2.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 9
Всего: 10



main :
   Создаешь массив для хранения хендлов потоков
   1. handle[A] = createthread(1a...
   2. handle[B] = createthread(1b...
   3.WaitForMultipleObject( массив хендлов, ждать все...
   4.Обмен параметрами
   5. handle[A] = createthread(2a...
   6. handle[B] = createthread(2b...
   7.WaitForMultipleObject( массив хендлов, ждать все...

тут сколько угодно A,B,C...

если же ты хочешь, чтобы "кусочки" A и B работали и обменивались в процессе работы, то лучше использовать критические секции:

 func:
      1.выполняется часть 1.
      2. EnterCriticalSection(...
      3.Обмен
      4. LeaveCriticalSection(...
      5. Выполняется часть 2
В принципе, тоже сколько угодно кусочков...


  

   
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0390 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.