Форум программистов, компьютерный форум CyberForum.ru

C++

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

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

09.06.2014, 01:52. Просмотров 330. Ответов 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- е количество потоков заданное пользователем и каждый поток считает эту прогрессию, как сделать что бы эта прогрессия разбивалась на части, и каждый поток обрабатывал свою часть, и результаты каждого потока перемножались
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2014, 01:52     Разбить подсчет арифметической прогрессии на несколько потоков
Посмотрите здесь:

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

Заполнить массив первыми 10 членами арифметической прогрессии с известным первым членом прогрессии А и разницей Р. - C++
С++ Помогите пожалусто. Заполнить массив первыми 10 членами арифметической прогрессии с известным первым членом прогрессии А и...

Перемножить две матрицы, причем запустить подсчет в несколько потоков - C++
Всем привет. Суть задания перемножить две матрицы, причем запустить подсчет в несколько потоков, в разное кол-во, сравнить время выполнения...

Вычисление арифметической прогрессии - C++
как записать вычисление арифмитической прогрессии. без программы. просто отрывко вычисления. Давайте темам осмысленные названия

Вычисления n-го члена арифметической прогрессии - C++
Помогите пожалуйста написать программы по рекурсии мне в среду срочно сдать их надо: Написать рекурсивную программу: вычисления n-го...

Являются ли числа элементами арифметической прогрессии - C++
даны 4 числа. определить, являются ли они элементами арифметической прогрессии. значения вводить в диалоге, иметь возможность повторного...

Построить заданное количество арифметической прогрессии - C++
Построить заданное количество арифметической прогрессии, общий член которой равен 3n-1. Выбрать 7 средних элементов из этой...

Заполнение массива элементами арифметической прогрессии - C++
Помогите написать код для заполнения массива элементами арифметической прогрессии. Первый элемент и разность вводятся с клавиатуры.

Заполнение массива членами арифметической прогрессии - C++
Напишите программу, которая заполняет массив из N элементов членами арифметической прогрессии с начальным значением X и разностью D . ...

Найти сумму членов арифметической прогрессии - C++
Подскажите пожалуйста как это сделать в с++: Найти сумму членов арифметической прогрессии a, a+d,...,a+(n-1)d по введенным...

Заполнение массива членами арифметической прогрессии - C++
Напишите программу, которая заполняет массив из N элементов членами арифметической прогрессии с начальным значением X и разностью D в...

Найти сумму членов арифметической прогрессии - C++
Найти сумму членов арифметической прогрессии a, a+d,...,a+(n-1)d по введенным значениям a,d,n. #include &lt;iostream.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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