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

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

Восстановить пароль Регистрация
 
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
16.01.2014, 16:05     вычислить значения одной и той-же функции с разными значениями, в несколько потоков #1
Есть задача, вычислить значения одной и той-же функции с разными значениями, которые известны изначально, в несколько потоков и вывести результат на экран и в файл. В какую сторону копать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2014, 16:05     вычислить значения одной и той-же функции с разными значениями, в несколько потоков
Посмотрите здесь:

C++ Найти значения функции F(x) в указанных точках x(j) и сравнить с точными значениями f(x(j))-F(x(j))
C++ можно ли в с++ вызвать переменную из одной функции в другую т.е. мы переменну задали в одной функции а использовали в другой... и как это реализовать?
Как создать 100 массивов разными значениями ? C++
C++ Вычислить значения функции
C++ Вычислить и вывести на экран значения функции в зависимости от входного значения Х
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
16.01.2014, 16:06     вычислить значения одной и той-же функции с разными значениями, в несколько потоков #2
ничего не понял..
ну поток вывода на экран: std::cout << result << std::endl;
в файл: outputFile << result << std::endl;
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
16.01.2014, 16:09  [ТС]     вычислить значения одной и той-же функции с разными значениями, в несколько потоков #3
нужно считать значения функции в несколько потоков и по мере окончания каждого счета выводить значения на экран и в файл
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
16.01.2014, 16:13     вычислить значения одной и той-же функции с разными значениями, в несколько потоков #4
нужно считать значения функции в несколько потоков
Вы имеете ввиду threeds ?
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
16.01.2014, 16:15  [ТС]     вычислить значения одной и той-же функции с разными значениями, в несколько потоков #5
да, их. Невнятно сформулировал вопрос, сорри.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
16.01.2014, 16:20     вычислить значения одной и той-же функции с разными значениями, в несколько потоков #6
да, их. Невнятно сформулировал вопрос, сорри.
если честно то да.
Под итожим вопрос.(на псевдокоде)
Код
result function(par)
{
   //делаем расчет с par
   return par
}

  threed t1(function(10));
  threed t2(function(20));
  threed t3(function(30));

  //что дальше ?
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
16.01.2014, 16:44     вычислить значения одной и той-же функции с разными значениями, в несколько потоков #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <future>
#include <vector>
 
unsigned long long fib(const unsigned i) { return i < 3 ? 1 : fib(i - 1) + fib(i - 2); }
 
int main()
{
    const unsigned numberOfTask = 20;
    unsigned n = 30;
    std::vector<std::future<unsigned long long>> futures(numberOfTask);
    for (auto& f : futures) f = std::async(std::launch::async, fib, ++n);
    n = 30;
    for (auto& f : futures) std::cout << "fib(" << ++n << ") = " << f.get() << "\n";
 
    return 0;
}
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
16.01.2014, 16:46  [ТС]     вычислить значения одной и той-же функции с разными значениями, в несколько потоков #8
Цитата Сообщение от egor2116 Посмотреть сообщение
//что дальше ?
как-только закончился t1, он пишет данные на экран и в файл, тоже самое с t2, t3 и т.д.
функция с разными параметрами считают разное время(хотя, время расчета может и совпасть для каких-то параметров). Все потоки пишут в один и тот же файл.
Да, еще, нужно иметь возможность все это скопом прибить и сохранить текущие результаты.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.01.2014, 17:37     вычислить значения одной и той-же функции с разными значениями, в несколько потоков #9
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
#include <iostream>
#include <fstream>
#include <thread>
#include <mutex>
using namespace std;
 
mutex g_lock;
 
void threadFunction(double n, ofstream& fout)
{
    double res;
 
    // вычисления
 
    g_lock.lock();
 
    cout << "n = " << n << ' ' <<  "res = " << res << endl;
    fout << n << ' ' << res << endl;
 
    g_lock.unlock();
}
 
int main()
{
    ofstream fout("file.txt");
    thread t1(threadFunction, 2.0, ref(fout));
    thread t2(threadFunction, 3.0, ref(fout));
    thread t3(threadFunction, 4.0, ref(fout));
    t1.join();
    t2.join();
    t3.join();
 
    return 0;
}
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
17.01.2014, 18:41  [ТС]     вычислить значения одной и той-же функции с разными значениями, в несколько потоков #10
Спасибо, а как это же сделать в 2010=й студии?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.01.2014, 19:31     вычислить значения одной и той-же функции с разными значениями, в несколько потоков #11
Цитата Сообщение от vua72 Посмотреть сообщение
а как это же сделать в 2010=й студии?
Это же - никак, там нет поддержки С++11. Используйте Win32 API.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2014, 10:43     вычислить значения одной и той-же функции с разными значениями, в несколько потоков
Еще ссылки по теме:

Дано разложение функции в ряд Тейлора. Вычислить для значения x и точности Eps точное значение функции C++
Вычислить значения функции F на интервале от начального значения до конечного значения C++
C++ Несколько макро с разными параметрами

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

Или воспользуйтесь поиском по форуму:
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
24.01.2014, 10:43  [ТС]     вычислить значения одной и той-же функции с разными значениями, в несколько потоков #12
MyCass.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma once
#include <windows.h>
 
class MyClass {
    //// поля
    // ..
    HANDLE m_write_to_file; // мютекс для синхронизации записи в файл
    ////...
    //// методы
    static DWORD WINAPI mainThread(void* ); // фукнция для реализации потоков
    DWORD runThread(); // поток
    
 
  public:
    MyClass(void);
    virtual ~MyClass(void);
    void initThreads(); //запуск потоков
};
MyClacc.cpp
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
#include "MyClass.h"
 
MyClass::MyClass(void){
    //...
    m_write_to_file = CreateMutex(NULL,false,NULL);
    
}
 
MyClass::~MyClass(void) {
 
}
/// фукнция для реализации потоков
DWORD WINAPI MyClass::mainThread(void* lpParam) {
    return ((MyClass*)lpParam)->runThread();
}
/// поток
DWORD MyClass::runThread() {
    WaitForSingleObject(m_write_to_file,INFINITE);
    ... // вывод
    ReleaseMutex(m_write_to_file);
    return 0;
}
 
///процедура для создания потков
void MyClass::initThreads {
    HANDLE *thread_handles = NULL;
    size_t sz=m_num_of_threads;
    thread_handles = new HANDLE[sz];
    for(size_t i = 0; i < sz; i++) {
        thread_handles[i] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)mainThread, this, 0, NULL);
    }
    WaitForMultipleObjects(sz, thread_handles, TRUE, INFINITE);
    for(size_t i = 0; i<sz; i++) {
        CloseHandle(thread_handles[i]);
    }
    delete[] thread_handles;
}
Yandex
Объявления
24.01.2014, 10:43     вычислить значения одной и той-же функции с разными значениями, в несколько потоков
Ответ Создать тему
Опции темы

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