1 | |
Объясните принцип создания многопоточности04.05.2012, 11:10. Показов 1270. Ответов 5
Метки нет (Все метки)
Здраствуйте, объясните пожалйста как сделать программу многопоточной, у меня есть одна программа, в которой большая нагрузка идет на главный цикл, если я правильно понимаю, то он обрабатывается одним потоком одного ядра процессора, как правильно оформить код, чтобы нагрузка равномерно распределялась на все ядра?
0
|
04.05.2012, 11:10 | |
Ответы с готовыми решениями:
5
Объясните принцип Объясните принцип бинарного поиска объясните принцип работы цикла : ? Объясните принцип работы программы |
95 / 64 / 5
Регистрация: 03.07.2011
Сообщений: 148
|
|
04.05.2012, 12:05 | 2 |
У вас в чем вопрос : как создать поток или как привязать его к конкретному ядру? Механизм многопоточности не обязательно должен работать на нескольких ядрах - до появления многоядерных процессоров все великолепно работало на одноядерных. Если вкратце, то в системе есть шедулер (планировщик потоков), который в зависимости от приоритета потока выдает ему порции процессорного времени.
Добавлено через 18 минут Сам поток создается функцией CreateThread, привязка его к конкретному ядру выполняется функцией SetThreadAffinityMask (в Windows).
1
|
04.05.2012, 14:07 [ТС] | 3 | |||||
Например у меня 4-хядерный процессор, каждое ядро может выполнять 2 потока, в одном видеоконвертере видела как при конвертировании большого количества фильмов обрабатываются 8 фильмов одновременно, как на этом примере сделать подобное?
0
|
95 / 64 / 5
Регистрация: 03.07.2011
Сообщений: 148
|
|
04.05.2012, 14:20 | 4 |
programina, работа с потоками имеет ряд особенностей - синхронизация, приоритеты и прочее. Кроме того, весьма полезно знать, как они работают в системе. Очень советую Вам сначала почитать про потоки и работу с ними - всех советов здесь все равно не дашь, в конечном итоге придется пересказать книгу Неплохо про потоки написано у Джефри Рихтера, например в книге "Windows для профессионалов. Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows.".
1
|
04.05.2012, 19:21 [ТС] | 5 | ||||||||||
С одновременным запуском разных функций ясно, сделать можно с помощью винапишной функции CreateThread, данная программа выводит одновременно четыере месажбокса:
Добавлено через 19 минут Добавила в начало каждой функции задержку при помощи Sleep(...)
0
|
95 / 64 / 5
Регистрация: 03.07.2011
Сообщений: 148
|
|
04.05.2012, 20:30 | 6 |
Я вижу, что вы проигнорировали мою рекомендацию насчет изучения литературы. Поверьте, подобные вопросы уже задавались и разбирались. Есть приоритеты, есть синхронизация - прошу вас, почитайте, многие вопросы отпадут сами собой. Кроме того, знания основ помогут выбрать изначально правильное направление-так, чтобы потом не пришлось переделывать все заново.
1
|
04.05.2012, 20:30 | |
04.05.2012, 20:30 | |
Помогаю со студенческими работами здесь
6
Объясните, пожалуйста, принцип работы. Объясните принцип работы кода Объясните принцип работы программы Объясните принцип работы программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |