17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
|
||||||
1 | ||||||
OpenMP, создание потоков30.08.2010, 19:23. Показов 11347. Ответов 14
Метки нет (Все метки)
В инете нашел много примеров по распараллеливание циклов, но никак не могу понять, как просто написать чтобы конкретная функция выполнялась в отдельном потоке?
Нужно чтобы функция void start_st каждый раз при вызове запускалась в отдельном потоке. Т.е. должно получится в данном случае 3 потока (1 - основной и 2 - функция start_st с разыми параметрами) Подскажите как правильно написать? Спасибо
0
|
30.08.2010, 19:23 | |
Ответы с готовыми решениями:
14
Создание потоков в openmp Как контролировать число создаваемых потоков? OpenMP OpenMP. Назначение числа потоков во время исполнения OpenMP. Время выполнения программы увеличивается с количеством потоков |
30.08.2010, 20:06 | 2 | |||||
Какой компилятор ? Дополнительные ключи компиляции используешь ?
Добавлено через 3 минуты Вот пример кода, к-рый должен работать:
0
|
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
|
|
30.08.2010, 20:19 [ТС] | 3 |
Пишу в VS2010.
А чем ваш вариант отличается от моего? Мне нужно чтобы работало так: - запустилась прога - потом создался отдельны поток и в нем начала выполняться функция с первыми параметрами - потом создался второй поток и в нем начала выполняться функция с вторыми параметрами - основной поток, функция main начала выполняться дальше Т.е. в результате 3 отдельных потока. В вашем примере всего одна функция printf и по всей видимости выполняется 2 раза... Покажите пожалуйста как сделать чтобы
0
|
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
|
|
30.08.2010, 21:02 [ТС] | 5 |
Andrew_Lvov работает, но не так, как мне нужно
Добавлено через 37 минут Может можно как-то так реализовать:
0
|
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
|
|
31.08.2010, 18:02 [ТС] | 7 |
Не компилируется:
Разобрался как запускать куски кода в отделных потоках без цикла, нужно заключать их в
0
|
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
|
|
31.08.2010, 19:08 [ТС] | 9 |
Можно, но зачем, если нет смысла? Во многих случая while удобнее и правильнее.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
31.08.2010, 19:10 | 10 |
Union, Идентичные циклы елки палки. На вкус и цвет. Где-то удобнее while, где-то for. Но они взаимно-заменяемые
0
|
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
|
|||||||||||
31.08.2010, 20:31 [ТС] | 11 | ||||||||||
Допустим мне необходимо считывать строки из базы и на каждую запускать отдельный поток.
Через цикл while это будет так:
В первом примере осталось только запустить функцию в отдельном потоке. Во втором всё, что заключено в цикл for в каждом цикле будет создаваться новый поток и выполняться в нём, если я правильно понял... хотя на некоторых сайтах пишут что потоки динамически добавляться не могут и устанвливаются вначале столько, сколько ядер. Тогда если у меня рассчитано что функция исполняется неограниченное время - программа зависне, т.к. функция не будет запущена столько раз, сколько строк в базе. Да, так и есть, с циклом for выходит фигня Добавлено через 13 минуты Я неправильно задал вопрос... как с помощью OpenMP указать что такую-то функцию нужно выполнить в отдельном потоке? В таком случае не важно какой цикл используется.
0
|
16.11.2014, 23:16 | 12 | |||||
Если я правильно понял постановку вопроса, то так:
Но при этом внутри секций надо не забывать работать с синхронизацией. Так я в примере воткнул в обе паралkельные ветки вызов printf'а, который в общем случае может и не уметь правильно работать в потоках (т.е. печати от обоих printf'ов за счёт параллельного исполнения в консоли могут перемешаться)
0
|
Max Dark
|
16.11.2014, 23:22
#13
|
Не по теме: всего то 4 года прошло...
0
|
castaway
|
16.11.2014, 23:33
OpenMP, создание потоков
#15
|
Не по теме: Алкоголь он такой...
0
|
16.11.2014, 23:33 | |
Создание и завершение процессов и потоков. Приоритеты выполнения потоков OpenMP. Время выполнения программы больше чем без OpenMP Остановка всех потоков OpenMP Создание потоков Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |