Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
1

Создание и сортировка массива в двух потоках. WinApi

30.11.2012, 11:15. Показов 1708. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!

Возникла необходимость передачи данных между потоками, книжки прочёл (Рихтер, Щупак), но примеры на столько примитивные, что разобраться с более сложными задачами я пока что не могу.

Собственно вопрос такой - как осуществить генерацию и сортировку массива в двух потоках (в первом генерируется массив, во втором - сортируется или тупо каждому элементу массива прибавляется скажем единица).
Функции WINAPI отличаются тем, что передача в них параметров осуществляется только через указатель на структуру (пример в книге Щупака не сильно прояснил ситуацию) - здесь я и застрял, пожалуйста, приведите пример.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2012, 11:15
Ответы с готовыми решениями:

Создание WinApi функции для нахождения максимального элемента массива в нескольких потоках
Задача состоит в следующем: ножно написать программу, которая будет находить максимальное значение...

Сортировка массива в нескольких потоках
Привет всем, у меня небольшая проблема с написанием кода ... Проблема в том, что я не знаю как мне...

Создание из двух массивов одного и сортировка по возрастанию
C++ Builder . Даны два массива a и с. Из них получить массив b, в котором будут присутствовать...

Сортировка в потоках
Здравствуйте. Нужно отсортировать массив 3-мя различными сортировками. Выполнить это в потоках. Не...

2
2859 / 2006 / 988
Регистрация: 21.12.2010
Сообщений: 3,711
Записей в блоге: 10
30.11.2012, 22:54 2
Лучший ответ Сообщение было отмечено _arty_ как решение

Решение

генерация и сортировка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <tuple>
#include <Windows.h>
#include <Process.h>
#include <algorithm>
#include <ctime>
#include <cstdlib>
#include <iomanip>
 
void _cdecl Sort(void* p)
{
    auto pctuple = reinterpret_cast<std::tuple<int*, int*> const*>(p);
    std::sort(std::get<0>(*pctuple), std::get<1>(*pctuple));
}
 
void _cdecl Generate(void* p)
{
    auto pctuple = reinterpret_cast<std::tuple<int*, int*> const*>(p);
    srand(time(0));
    struct Generator
    {
        int const operator()() const
        {
            return (rand() % 21 - 10);
        }
    };
    std::generate(std::get<0>(*pctuple), std::get<1>(*pctuple), Generator());
    auto hThread = reinterpret_cast<HANDLE>(_beginthread(Sort, 0, p));
    WaitForSingleObject(hThread, INFINITE);
}
 
int main()
{
    int arr[10];
    auto tuple = std::make_tuple(std::begin(arr), std::end(arr));
    auto hThread = reinterpret_cast<HANDLE>(_beginthread(Generate, 0, &tuple));
    WaitForSingleObject(hThread, INFINITE);
    for(auto const& val : arr)
    {
        std::cout << std::setw(6) << std::left << val;
    }
    return 0;
}
0
29 / 28 / 7
Регистрация: 10.07.2009
Сообщений: 317
01.12.2012, 14:11  [ТС] 3
Спасибо, можно дать коментарии к коду?
0
01.12.2012, 14:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2012, 14:11
Помогаю со студенческими работами здесь

Сортировка двух векторов, создание третьего и запись в файл
Необходимо отсортировать два вектора int таким образом чтобы сохранить результат в третий вектор,...

Сортировка в потоках Task
Здравствуйте! По заданию мне нужно отсортировать массив двумя алгоритмами сортировки и вывести...

Одинаковый id в двух потоках
#include&lt;iostream&gt; #include&lt;thread&gt; using namespace std; class background_task { public: int...

Программа в двух потоках
Есть задание написать простейшую программу, работающую в двух потоках и выводящую хоть что-то в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru