|
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 5
|
||||||
Как в VS 2008 создать поток?11.12.2009, 22:09. Показов 6259. Ответов 3
Метки нет (Все метки)
Здравствуйте!
IDE - Visual Studio 2008 C++ OS - Windows XP Я в С++ новичёк, вот разбираюсь с потоками. В общем "концепция" ясна. Поток - это такая штука с помощью которой можно распараллеливать задачи. То есть, если в компьютере есть 2 и больше ядер или процессоров, то можно их нагрузить, что бы они работали параллельно, и соответственно ускорить выполнение программы. Проблема состоит в следующем, никак не могу понять как выглядит алгоритм распараллеливания. Знаю что есть функция createThread, так же знаю что её не рекомендуется использовать если в коде используются стандартные функции библиотеки С, такие как например printf() или strcmp(). Проблема в том что функции стандартной библиотеки С не предназначены для использования в Win32 АРІ, и для того чтобы создать поток необходимо во время создания и завершения потока выполнять некоторые действия, все эти действия уже включены в функцию _beginthreadex() для создания потока и _endthreadex() – для завершения потока. эти функции описаны в ргосеss.h Вот я пришел к тому что мне нужна функция _beginthreadex(). Читал MSDN. Есть примеры программ с использованием потоков. Программа находит сумму ветора чисел, который состоит не более чем из 8-ми элементов при помощи потоков. Ми имеем массив а[], и ячейки памяти mem.
1. HANDLE Thread[8]; - Что такое HANDLE? Это тип данных или что? Thread[8] - это я так понимаю массив из 8 элементов типа HANDLE? 2. DWORD res; - что это такое? 3. Thread[i] = (HANDLE)_beginthreadex(NULL, 0, Sum, 0, 0, &tid); Sleep(10); Как понять эту строчку? 4. WaitForMultipleObjects(4, Thread, TRUE, INFINITE ); Как понять эту строчку? Заранее благодарен за понимание, я новенький в этом деле, поэтому с чтением документации возникают проблемы. Нужна определённая база, чтобы понимать всё. Поправьте если что не так говорю. Заранее благодарен!!!
0
|
||||||
| 11.12.2009, 22:09 | |
|
Ответы с готовыми решениями:
3
Как создать дополнительный поток?
Как создать виртуальный поток и переопределить оператор <<? |
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
| 11.12.2009, 22:39 | |
|
1. HANDLE - это описатель (дескриптор) объекта ядра "поток". Точно такой же хэндл, как, например, для файлов - возвращаемый функцией CreateFile. И точно так же подлежит закрытию, когда он тебе больше не нужен.
2. DWORD res; - объявление переменной res типа DWORD. 3. Функцией _beginthreadex запускается поток, а возвращенное значение, трактуемое как хэндл потока, заносится в массив хэндлов. Зачем там потом делается Sleep(10); - задержка на 10 мс - это хз, спроси у автора этого кода. ![]() 4. WaitForMultipleObjects - ожидаем завершения всех потоков (освобождения их хэндлов). Справку по функции WaitForMultipleObjects можно прочесть в MSDN.
1
|
|
|
23 / 23 / 5
Регистрация: 17.09.2008
Сообщений: 130
|
|
| 12.12.2009, 02:16 | |
|
Советую прочесть Дж.Рихтера. Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows. (в интернете есть в удобочитаемом формате) ГЛАВА 6 Базовые сведения о потоках.
Займет некоторое время, зато будешь разбираться в вопросе.
1
|
|
|
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 5
|
|
| 12.12.2009, 13:43 [ТС] | |
|
nazavrik, Спасибо большое!! Обязательно прочту! Я искал литературу, нашел "Параллельное и распределённое программирование с использованием С++" Авторы: Трейси Хьюз и Камерон Хьюз
0
|
|
| 12.12.2009, 13:43 | |
|
Помогаю со студенческими работами здесь
4
Как создать меню в mfc в msvs 2008? Нужно создать базу данных (создать пустой бинарный файл). Через поток. Поток бинарного файла описать в виде локальной переменной внутри функции. Как создать поток? Как создать поток? Как создать 2-ой поток? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|