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

Написать многопоточное приложение - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Collaps
1 / 1 / 0
Регистрация: 19.02.2010
Сообщений: 30
19.03.2012, 12:32     Написать многопоточное приложение #1
Один поток используется для вычисления x по формуле x=t*t+3t+4, где t-величина, зависящая от системного времени, а второй поток— для вычисления y по формуле y=2x+6, где x— вычислен в первом потоке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pervokursnica
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 9
06.06.2013, 09:55     Написать многопоточное приложение #2
Цитата Сообщение от Collaps Посмотреть сообщение
Один поток используется для вычисления x по формуле x=t*t+3t+4, где t-величина, зависящая от системного времени, а второй поток— для вычисления y по формуле y=2x+6, где x— вычислен в первом потоке
у меня тоже такое есть в задании, помогите пожалуйста разобраться.
среда разработки не имеет значения
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
06.06.2013, 13:56     Написать многопоточное приложение #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
#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <ctime>
 
using namespace std;
 
DWORD WINAPI ThreadProc(LPVOID Param);
DWORD WINAPI ThreadProc2(LPVOID Param);
 
int x,y;
 
int main(int argc, char *argv[])
{
    
    HANDLE hf;
    
   hf = CreateThread(NULL,0,ThreadProc,0,0,NULL);
    
   WaitForSingleObject( hf, INFINITE);
                                
   CreateThread(NULL,0,ThreadProc2,0,0,NULL);
                                
                                
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
DWORD WINAPI ThreadProc(LPVOID Param){
      
int t;
      
      srand (time (NULL));
     t = rand()%100+1;
     
x=t*t+3*t+4;
      
      cout << "X = "<<x<<"\n";
      
      }
      
DWORD WINAPI ThreadProc2(LPVOID Param){
      
      y=2*x+6;
      
cout << "Y = "<<y<<"\n";
      
      }
Collaps, pervokursnica, читаем Джеффри Рихтер - Создание эффективных win32-приложений.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
10.06.2013, 12:02     Написать многопоточное приложение #4
Не очень понятно зачем разбивать на 2 потока, если они всё равно будут выполняться последовательно. Ну, только если конвейеризацию какую-то сделать, если всё это зациклить скажем. А используя C++11, можно сделать например так:
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
#include <iostream>
#include <future>
#include <cstdint>
#include <ctime>
 
int x( int t )
{
    return t*t + 3*t + 4;
}
 
int y( int x )
{
    return 2*x + 6;
}
 
int main()
{
    auto a = std::async( x, time(0)%10 );
    auto b = std::async( y, a.get() );
    std::cout << b.get() << std::endl;
    std::system( "pause" );
 
    return 0;
}
Yandex
Объявления
10.06.2013, 12:02     Написать многопоточное приложение
Ответ Создать тему
Опции темы

Текущее время: 13:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru