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

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

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

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

14.04.2013, 18:17. Просмотров 271. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 18:17     Мультипоточность (очень просто)
Посмотрите здесь:

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

Очень просто - 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 пишет в буфер и при первой возможности выводит забуференное в...

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

очень очень странная ошибка - C++
вообщем стоит Windows 8.1 стоит visual studio 2008 возникла проблема: когда пытаюсь скомпилировать прогу - возникает 1 ошибка: ...

просто 2*2 - C++
написать прогу, выводящую элементы массива в порядке возрастания!!! Добавлено через 14 минут Неужели никто не ответит

просто интересуюсь - C++
1. надо сделать чтобы полностью рандомные числа неповторялись... srand(time(NULL)) написал. 2. какую сортировку лучше всего...


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

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

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