Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Yessman
0 / 0 / 0
Регистрация: 09.12.2013
Сообщений: 7
#1

Разбить подсчет арифметической прогрессии на несколько потоков - C++

09.06.2014, 01:52. Просмотров 345. Ответов 0
Метки нет (Все метки)

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <windows.h>
#include <iostream>
 
using namespace std;
 
CRITICAL_SECTION cs;
int e;
int sh;
int col;
int mas;
int res=1;
int n;
// Функция потока
DWORD WINAPI ThreadFunc(LPVOID param)
{
    EnterCriticalSection(&cs);
    int* mas = new int[col];
    mas[0]=e;
    for (int i = 1; i <= col; i++)
    {
        mas[i]=e+sh*i;
    }
 
    for (int i = 0; i <= col; i++)
    {
        cout << mas[i] << '*' << flush;
    }
    for (int i = 0; i <= col; i++)
    {
        res= res*mas[i];
    }
    cout<<"="<<res<<flush;
    
    cout << endl;
    res=1;
    Sleep(3000);
    LeaveCriticalSection(&cs);
    return 0;
}
 
int main()
{
    cout<<"Vvedite pervii element posledovatelnosti"<<'\n';
    cin>>e;
    cout<<"Vvedite shag posledovatelnosti"<<'\n';
    cin>>sh;
    cout<<"Vvedite kolichestvo elementov posledovatelnosti"<<'\n';
    cin>>col;
    cout<<"Kolichestvo potokov:";
    cin>>n;
    //время проги
    LARGE_INTEGER freq;
    QueryPerformanceFrequency(&freq);
    LARGE_INTEGER start_time;
    QueryPerformanceCounter(&start_time);
    //создаем потки
    HANDLE* hThreads = new HANDLE[n];
    //крит секции
    InitializeCriticalSection(&cs);
 
    for (int i = 0; i < n; i++)
    {
        hThreads[i] = CreateThread(NULL, 0, ThreadFunc,NULL, 0, NULL);
    }
 
    WaitForMultipleObjects(n, hThreads, true, INFINITE);
 
    for (int i = 0; i < n; i++)
        CloseHandle(hThreads[i]);
    DeleteCriticalSection(&cs);
 
    LARGE_INTEGER end_time;
    QueryPerformanceCounter(&end_time);
    double time = (double) (end_time.QuadPart - start_time.QuadPart) / freq.QuadPart * 1000;
    cout<<"Vremya vipolneniya programmu:";
    cout<<time<<'\n';
    system("Pause");
    return 0;
}
есть програмка которая считает арифметическую прогрессию, создается N- е количество потоков заданное пользователем и каждый поток считает эту прогрессию, как сделать что бы эта прогрессия разбивалась на части, и каждый поток обрабатывал свою часть, и результаты каждого потока перемножались
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2014, 01:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разбить подсчет арифметической прогрессии на несколько потоков (C++):

Вывести первые 10 членов арифметической прогрессии с заданным начальным членом и шагом - C++ Builder
Вывести первые 10 членов арифметической прогрессии с заданным начальным членом и шагом.

Воспроизведение звуков в несколько потоков builder c++ - C++ Builder
суть программы в том что при нажатии на кнопки воспроизводится звук, но так как воспроизведение ведется в 1 поток при нажатии новой клавиши...

Разбить строку на несколько частей? - C++ Builder
Здравствуйте. У меня проблема. Я только начинаюший в Builder-e и вообще любитель чё-нибудь написать. Недавно написал простинькую...

Как правильно создать несколько потоков, вызывающий одну и ту же функцию? - C++ Builder
Пробовал так: ... #include &quot;process.h&quot; ... __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { ...

Как создать в приложении несколько потоков - Visual C++
И сильно ли это облегчит задачу обмена в реальном времени с последовательным портом.А то как щас есть-дико тормозит всё приложениеЕсли...

Выполнение функции в несколько потоков - C++ WinAPI
Добрый день! Вопрос следующий: Есть рекурсивная функция DWORD WINAPI foo(LPVOID param), т.е. ее можно передавать в аргумент CreateThread....

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2014, 01:52
Привет! Вот еще темы с ответами:

Найти минимум и максимум в матрице в несколько потоков - C++ WinAPI
Есть пример подсчёта количества N-разрядных чисел в массиве, но как атомарно делать проверку на мин/макс я не знаю. Думаю по идее должна...

Копирование файлов из группы каталогов в несколько потоков - C++ WinAPI
Добрый день.С потоками дел никогда не имел. Помогите пожалуйста сделать задачку небольшую: Обеспечить копирование файлов из группы...

Поиск и замена слов в текстовом файле в несколько потоков - C++ WinAPI
Добрый день. Помогите пожалуйста разобраться с потоками. Мне необходимо: Обеспечить поиск и замену слов в текстовом файле в несколько...

Thread разбить программу в несколько потоков - C++
Всем привет! Народ, такая проблема, написала программу, теперь нужно её разбить на несколько потоков. Но вот беда, не умею пользоваться...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru