|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.04.2013, 19:21 | #1 |
Пользователь
Регистрация: 27.12.2010
Сообщений: 22
|
Многопоточность
Всем привет! Есть такая задача: генерирование всех перестановок с N элементов. Её нужно реализовать в несколько потоков. P.S. не прошу писать за меня код, объясните как это делается.
Путь в тысячу миль начнется из одного шага
|
10.04.2013, 12:17 | #2 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Обычно есть один "главный" поток, который "раздаёт" подзадачи другим потокам. Основное при распараллеливании алгоритма - разбить задачу на непересекающиеся подзадачи (чтобы разные потоки работали по возможности со своими частями памяти и не делали одну и ту же работу).
В данном случае, есть хороший набор подзадач Ti = "сгенерировать все перестановки N элементов, где на первом месте стоит i-ый элемент". Главный поток создаёт N потоков (возможно, стоит ограничить максимальное число потоков и создавать новые только по завершении старых), каждому на старте передаёт его i. Дочерний поток создаёт (и куда-то выводит, видимо) перестановки, когда закончит - сигнализирует главному потоку, что он всё сделал и дохнет. |
11.04.2013, 16:29 | #3 |
Новичок
Джуниор
Регистрация: 11.04.2013
Сообщений: 3
|
Готовый пример
Все очень просто. Используя CreateThread создаете нужное вам количество потоков. Единственный тонкий момент в том, что код работы с глобальными переменными желательно ограничивать парой функций EnterCriticalSection LeaveCriticalSection. Вот здесь простой пример:
http://strongcpp.blogspot.ru/2013/04/blog-post.html Если вам в нем что-то непонятно, спрашивайте. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Многопоточность | 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 |