Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2013, 19:21   #1
symrak
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 22
По умолчанию Многопоточность

Всем привет! Есть такая задача: генерирование всех перестановок с N элементов. Её нужно реализовать в несколько потоков. P.S. не прошу писать за меня код, объясните как это делается.
Путь в тысячу миль начнется из одного шага
symrak вне форума Ответить с цитированием
Старый 10.04.2013, 12:17   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Обычно есть один "главный" поток, который "раздаёт" подзадачи другим потокам. Основное при распараллеливании алгоритма - разбить задачу на непересекающиеся подзадачи (чтобы разные потоки работали по возможности со своими частями памяти и не делали одну и ту же работу).
В данном случае, есть хороший набор подзадач Ti = "сгенерировать все перестановки N элементов, где на первом месте стоит i-ый элемент". Главный поток создаёт N потоков (возможно, стоит ограничить максимальное число потоков и создавать новые только по завершении старых), каждому на старте передаёт его i. Дочерний поток создаёт (и куда-то выводит, видимо) перестановки, когда закончит - сигнализирует главному потоку, что он всё сделал и дохнет.
Abstraction вне форума Ответить с цитированием
Старый 11.04.2013, 16:29   #3
consthab2
Новичок
Джуниор
 
Регистрация: 11.04.2013
Сообщений: 3
По умолчанию Готовый пример

Все очень просто. Используя CreateThread создаете нужное вам количество потоков. Единственный тонкий момент в том, что код работы с глобальными переменными желательно ограничивать парой функций EnterCriticalSection LeaveCriticalSection. Вот здесь простой пример:

http://strongcpp.blogspot.ru/2013/04/blog-post.html

Если вам в нем что-то непонятно, спрашивайте.
consthab2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многопоточность lalilulelo Операционные системы общие вопросы 20 16.04.2012 19:33
Многопоточность t2skler Общие вопросы C/C++ 4 16.04.2012 14:24
Многопоточность alex0097 Общие вопросы Delphi 3 05.05.2011 22:46
Многопоточность и с++ Koshmarovsky Visual C++ 13 06.09.2010 20:39
многопоточность DeDoK Общие вопросы Delphi 6 01.08.2010 02:14