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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Логос
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 8
#1

Запуск потока для функции с параметрами - C++

04.11.2009, 16:32. Просмотров 1549. Ответов 1
Метки нет (Все метки)

Доброго дня!

Что хочется: распараллелить выполнение процедуры func. Давая новым потокам соответствующие параметры.

На c# я использовал следующую конструкцию:
C#
1
2
3
4
     ThreadStart t = delegate { func(a,b,c); };
     new Thread(t).Start();
     func(d,c,e);
     ..........
Тут же видимо нужно мою func(...) привести к LPTHREAD_START_ROUTINE, чтобы запустилась CreateThread(...). Правильно?
А как это сделать?

Пробовал, что-то в духе
C++
1
2
3
4
delegate LPTHREAD_START_ROUTINE funct();
    funct myFunc = gcnew funct( func(a,b,c) );
    DWORD ThreadId;
    HANDLE hThread = CreateThread(NULL, 0, myFunc, 0, 0, &ThreadId);
Но выдает множество ошибок, не понимает слово delegate, хотя вроде бы using namespace System; я написал.

Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2009, 16:32     Запуск потока для функции с параметрами
Посмотрите здесь:

C++ Запуск через командную строку с параметрами
Функции с числовыми параметрами C++
C++ Старт потока с 2 параметрами
Запуск потока из другого приложения C++
C++ Запуск приложения с параметрами. Работа с аргументами
Функции с варьирующимися параметрами C++
Запуск .exe с параметрами? C++
C++ Запуск программы с параметрами с командной строки
Функции с параметрами C++
Написать перегруженные функции с двумя и тремя параметрами для вычисления суммы, разницы, произведения, доли C++
Препроцессорные макросы, запуск программы с параметрами C++
C++ Запуск программы с параметрами

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Логос
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 8
05.11.2009, 15:00  [ТС]     Запуск потока для функции с параметрами #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
struct MY_STRUCT
{
    int a;
    int b;
    //..... и пр параметры нашей ф-ии
};
 
DWORD WINAPI MyThread(MY_STRUCT y)  //все параметры убираем в структуру
{ 
    printf("%d",y.i);
    return 0; 
} 
.....
{
        ..........
    DWORD dwThreadId;
    MY_STRUCT *m=new MY_STRUCT();
    m->a=5;
    m->b=10;
    LPVOID u=new LPVOID();
    MY_STRUCT* pStruct = reinterpret_cast<MY_STRUCT*>(u);
    pStruct=m;
    HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MyThread, (LPVOID)pStruct,0,&dwThreadId); 
        ..........
}
Вполне допускаю, что это далеко не самое выдающееся решение, но оно у меня заработало
Yandex
Объявления
05.11.2009, 15:00     Запуск потока для функции с параметрами
Ответ Создать тему
Опции темы

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