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

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

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

Старт потока с 2 параметрами - C++

24.03.2013, 23:16. Просмотров 294. Ответов 2
Метки нет (Все метки)

Нужно запустить функцию в новом потоке. Но у функции 2 параметра. Естественно, что я попытался создать структуру, и передавать эту структуру, но компилятору это не нравится. В интернете везде ответ "создайте структуру". Я в тупике..) Подскажите, кто знает.
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
#include <windows.h>
#include <iostream>
#include <fstream>
#include <process.h>
using namespace std;
 
void work(char*,char*);
struct files
{
    char* in;
    char* out;
 
};
int main()
{
    HANDLE  hThread;
    DWORD   IDThread;
    files f;
    f.in="in.txt";
    f.out="out.txt";
    hThread = (HANDLE)
        _beginthreadex(NULL, 0, work, &f, 0, &IDThread);
    if (hThread == NULL)
        return GetLastError();
    WaitForSingleObject(hThread, INFINITE);
    CloseHandle(hThread);
    system("PAUSE");
    return 0;
}
 
void work(files f)
{
    FILE *in,*out;
    float mass[9];
    in=fopen(f.in,"r");
    if(in==NULL)
        return;
    else
    {
        for(int i=0;i<9;i++)
        {
            fscanf(in,"%f",&mass[i]);
            cout<<mass[i]<<endl;
        }
        
    }
    fclose(in);
    out=fopen(f.out,"w");
    if(out==NULL)
        return;
    else
    {
        float res=mass[0]*mass[4]*mass[8]+mass[2]*mass[3]*mass[7]+mass[1]*mass[5]*mass[6]
        -mass[2]*mass[4]*mass[6]-mass[1]*mass[3]*mass[8]-mass[0]*mass[5]*mass[7];
        fprintf(out,"%f",res);
    }
    fclose(out);    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2013, 23:16     Старт потока с 2 параметрами
Посмотрите здесь:

Запуск потока для функции с параметрами C++
Конструктор с параметрами C++
C++ конструктор с параметрами
C++ Программа с параметрами
Создание потока из потока. C++
Функции с числовыми параметрами C++
C++ Вернуть на старт
Переписать с формальными параметрами C++
Как создать старт приложения на определенной кнопки клавиатуры C++
C++ Threads или как запрограммировать кнопку Старт и Стоп C++
Конструктор с параметрами C++
Функции с параметрами C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
1701 / 1194 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
25.03.2013, 08:28     Старт потока с 2 параметрами #2
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
#include <windows.h>
#include <iostream>
#include <fstream>
#include <process.h>
 
using namespace std;
 
unsigned __stdcall work(void*);
 
struct files
{
   const char* in;
   const char* out;
};
 
int main()
{
   HANDLE hThread;
   unsigned IDThread;
   files f;
   f.in = "in.txt";
   f.out = "out.txt";
   hThread = (HANDLE)_beginthreadex(NULL, 0, &work, &f, 0, &IDThread);
 
   if (hThread == NULL)
   {
      return GetLastError();
   }
   WaitForSingleObject(hThread, INFINITE);
   CloseHandle(hThread);
   system("PAUSE");
   return 0;
}
 
unsigned work(void* arg)
{
   files f = *reinterpret_cast<files*>(arg);
   FILE* in, *out;
   float mass[9];
   in = fopen(f.in, "r");
   if (in == NULL)
   {
      return 1;
   }
 
   for (int i = 0; i < 9; i++)
   {
      fscanf(in, "%f", &mass[i]);
      cout << mass[i] << endl;
   }
 
   fclose(in);
   out = fopen(f.out, "w");
   if (out == NULL)
   {
      return 1;
   }
 
   float res = mass[0] * mass[4] * mass[8] + mass[2] * mass[3] * mass[7] + mass[1] * mass[5] * mass[6] -
               mass[2] * mass[4] * mass[6] - mass[1] * mass[3] * mass[8] - mass[0] * mass[5] * mass[7];
   fprintf(out, "%f", res);
 
   fclose(out);
 
   return 0;
}
tiptop_crazy
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 39
26.03.2013, 00:07  [ТС]     Старт потока с 2 параметрами #3
Огромное спасибО)
Yandex
Объявления
26.03.2013, 00:07     Старт потока с 2 параметрами
Ответ Создать тему
Опции темы

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