Выполнение процедур на многопроцессорных ВС

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем Programmer_Hard, 2 мар 2007.

  1. Programmer_Hard

    Programmer_Hard Гость

    всем здравствуйте
    Столкнулся с такой задачей:
    Нужно выполнить процедуру сортировки ( да в принципе не важно какую) на многопроцессорной машине. Естественноно нужно распараллелить ее на несколько процессов , чтобы каждый проц выполнял свой процес(поток), чтобы выжать из системы максимум.
    А вот как определить сколько ядер на машине не знаю.
    Может кто подскажет чего-нибудь по теме?
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    А тебе это надо? Зачем привязываться к количеству ядер/процессоров?
     
  3. Programmer_Hard

    Programmer_Hard Гость

    Мне Нужно создать класс ,сортирующий массив, который бы создавал n (n-число процессоров) процессов, каждый из который бы работал только с куском массива передаваемым ему как параметр.

    Каким образом можно создавать потоки в своём классе ?
     
  4. Programmer_Hard

    Programmer_Hard Гость

    Надеюсь на вашу помощь
     
  5. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
  6. Barmutik

    Barmutik Гость

    Я бы посоветовал создавать не процессы а потоки и потом уже в зависимости от числа процессоров в системе распеределятьих непосредственно на разные процессоры... Хотя можно и процессы.. только тогда придётся организовывать межпроцессной взаимодействие.. нампример через Shared Memory...

    Вы только учтите сразу что Борляндовский менеджер памяти ОЧЕНЬ не дружит с многопроцессорностью и потенциально Вы можете получить замедление работы а не выигрыш по скорости. Хотя конечно это сильно зависит от того как Вы организуете Ваши структуры данных...
     
  7. Programmer_Hard

    Programmer_Hard Гость

    Можно ли использовать функцию CreateThread() и как для создания потока?
    Примерная структура класса:
    Код (Text):
    class Parallel{
    int n; //chislo potokov
    public:
    Parallel(){n=0;};
    My *Potok[16];
    void add_potok();
    int *Run(int *mas,int n_mas);
    };

    void Parallel::add_potok(){
    Potok[n]=CreateThread(/*  какой использовать параметр ?  */);
    n++;
    }
     
  8. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-Programmer_Hard+20:03:2007, 09:04 -->
    <span class="vbquote">(Programmer_Hard @ 20:03:2007, 09:04 )</span><!--QuoteEBegin-->Можно ли использовать функцию CreateThread() и как для создания потока?
    [snapback]59545" rel="nofollow" target="_blank[/snapback]​
    [/quote]

     
  9. koma

    koma Гость

    в этой книжке написано:
    . а про этот параметр в функции потока в этой же книжке говорится следующее:
    Может кто-нить объяснит, что там должно передаваться?

    Правда, еще в 4м издании книги есть такое:
    т.е. если я хочу в функцию потока передать какие-то свои собственные любые данные, я могу сделать это с пом. этого параметра?

    Соре за оффтоп :(
     
  10. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Да, при помощи pvParam можно передавать данные потокам

    Если бы Вы нормально описывали проблему, а не выдирали фразы из книги, то можно было бы и пояснить
     
  11. koma

    koma Гость

    можно передавать ЛЮБЫЕ данные, которые я захочу, а потом просто привести к нужному типу? да?
     
  12. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Да...
    P.S. А попробовать?
     
  13. koma

    koma Гость

    да уж и попробовала. но все равно спасибо)
     
Загрузка...

Поделиться этой страницей