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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 193
#1

Мультипоточность (очень просто) - C++

14.04.2013, 18:17. Просмотров 287. Ответов 0
Метки нет (Все метки)

Здравствуйте! Подскажите пожалуйста, почему когда я делая свою "программу" многопоточной в 3 потока(один основной и два дочерних), скорость выполнения увеличивается?
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
// 1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <tchar.h>
#include <strsafe.h>
#include "time.h"
using namespace std;
 
#define MAX_THREADS 3
#define BUF_SIZE 255
 
 
DWORD WINAPI fn1( LPVOID lpParam );
DWORD WINAPI fn2( LPVOID lpParam );
 
void Fn1();
void Fn2();
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    DWORD   dwThreadIdArray[MAX_THREADS];
    HANDLE  hThreadArray[MAX_THREADS]; 
    
    int chs;
    cin>>chs;
 
    
 
 
    switch (chs)
    {
    case 1:
        {
            long    i = 6000000L;
            clock_t start, finish;
            double  duration;
 
            start = clock();
 
            hThreadArray[0] = CreateThread( 
                NULL,                   // default security attributes
                0,                      // use default stack size  
                fn1,       // thread function name
                NULL,          // argument to thread function 
                0,                      // use default creation flags 
                &dwThreadIdArray[0]);   // returns the thread identifier 
 
            hThreadArray[1] = CreateThread( 
                NULL,                   // default security attributes
                0,                      // use default stack size  
                fn2,       // thread function name
                NULL,          // argument to thread function 
                0,                      // use default creation flags 
                &dwThreadIdArray[1]);   // returns the thread identifier 
 
            WaitForMultipleObjects(2, hThreadArray, TRUE, INFINITE);
            
            finish = clock();
            duration = (double)(finish - start) / CLOCKS_PER_SEC;
            cout<<endl<<"This is time "<<duration;
            break;
 
        }
    case 2:
        {
            long    i = 6000000L;
            clock_t start, finish;
            double  duration;
 
            start = clock();
 
            Fn1();
            Fn2();
 
            finish = clock();
            duration = (double)(finish - start) / CLOCKS_PER_SEC;
            cout<<endl<<"This is time "<<duration;
            break;
 
        }
        
    }
 
    
 
    system("pause");
    return 0;
}
 
DWORD WINAPI fn1( LPVOID lpParam )
{
    int x=0;
    for (int i=0;i<10000000;i++)
    {
        x*=i;
    }
    cout<<endl<<"fn1 FINISHED!"<<endl;
    return 0;
}
 
DWORD WINAPI fn2( LPVOID lpParam )
{
    int x=0;
    for (int i=0;i<10000000;i++)
    {
        x*=i;
    }
    cout<<endl<<"fn2 FINISHED!"<<endl;
    return NULL;
}
 
void Fn1()
{
    int x=0;
    for (int i=0;i<10000000;i++)
    {
        x*=i;
    }
    cout<<endl<<"Fn1 finished!"<<endl;
    return;
}
 
void Fn2()
{
    int x=0;
    for (int i=0;i<10000000;i++)
    {
        x*=i;
    }
    cout<<endl<<"Fn2 finished!"<<endl;
    return;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 18:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Мультипоточность (очень просто) (C++):

Очень просто - C++
Я понимаю что создавалось много тем с этой проблемой но я не нашел их Просто напишите пожалуста как можно считать количество элементов...

Очень просто(x^3) - C++
А как записать Х в кубе?

Двумерные массивы! очень просто! - C++
нужно что-нибудь простое, например сумма элементов, ну массив не больше 7*7! очень...:cry:

Просто расставить комменты, прога очень маленькая) Только сегодня , пожалуйста - C++
Расставьте комменты . #include &lt;string.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;locale.h&gt; #include &lt;iostream.h&gt; ...

Мультипоточность - C++
Всем привет! Подскажите, пожалуйста! какой функцией лучше всего организовать много потоков в windows forms? И чтобы приоритеты...

printf и мультипоточность - C++
Как printf работает при нескольких потоках? То, что я знаю: printf пишет в буфер и при первой возможности выводит забуференное в...

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

Ссылки на объект и мультипоточность - C++
Такая проблема: есть два потока и глобально объявленная ссылка на объект, когда я инициализирую её в одном потоке, во втором она остаётся...

Холивар и не очень важная тема. Просто хочу обсудить - C++
Посмотрел видос и заинтересовала как это можно реализовать.(Если вообще это возможно). Просто охота услышать другие варианты.

Обход файловой системы и мультипоточность - C++
Работаю над программой индексирования файловой системы. Все диски обходяться(как по дереву от корня) до последней папки рекурсивно и...

Странная ошибка при компиляции очень очень большой проги ,,boomerang,, - C++
Я в общем, даже и не представляю, куда смотреть в поисках ошибки. Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ...


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

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

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