Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для Cyphermak
4 / 4 / 0
Регистрация: 21.04.2013
Сообщений: 124

Как в поток передать разные функции?

19.11.2013, 18:00. Показов 2469. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть поток и две функции как передать их в метод Execute

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
//unit1.cpp
#include "Unit2.h"
 
void m1()
{
    Form1->Label1->Caption = IntToStr(z);
}
 
void m2()
{
    Form1->Label1->Caption = IntToStr(g);
}
 
TMyThread* Thr =  new TMyThread(true);
 
Thr->Execute(m2 или m1)
 
//unit2.h
class TMyThread : public TThread
{
private:
 
protected:
 
public:
    void __fastcall Execute();
    __fastcall TMyThread(bool CreateSuspended);
};
 
 
 
//unit2.cpp
__fastcall TMyThread::TMyThread(bool CreateSuspended)
    : TThread(CreateSuspended)
{
}
 
//---------------------------------------------------------------------------
 
void __fastcall TMyThread::Execute(как мне передавать сюда функции m1 или m2) //возможно ли это
{
    FreeOnTerminate = true;
 
        выполнить m1(i) или  m2(i);
}
 
ну вроде как универсальный поток или подскажите куда копать спасибо
Добавлено через 11 минут
блин криво функции написал
C++
1
2
3
4
5
6
7
8
9
10
11
void m1()
{
  for(int i =0;i<10000;i++)
    Form1->Label1->Caption = IntToStr(i);
}
 
void m1()
{
  for(int i =0;i<20000;i++)
    Form1->Label1->Caption = IntToStr(i);
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.11.2013, 18:00
Ответы с готовыми решениями:

Нужно создать базу данных (создать пустой бинарный файл). Через поток. Поток бинарного файла описать в виде локальной переменной внутри функции.
Совсем не понял эту тему. Нужно создать базу данных (создать пустой бинарный файл). Через поток....

Как в С++ Builder из 2х потоков рисовать на форме квадратики(это первый поток рисует) и кружочки (2ой поток))
Помогите пожалуйсмта))))) Как в С++ Builder из 2х потоков рисовать на форме квадратики(это первый...

Текущий поток должен быть задан как поток однопоточного контейнера (STA), чтобы вызовы OLE стали возможны
Всех с наступившим!!! Здоровья и благополучия в новом году. На С# такой ошибки не встречал. Первый...

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,904
Записей в блоге: 12
19.11.2013, 20:36
Цитата Сообщение от Cyphermak Посмотреть сообщение
как мне передавать сюда функции m1 или m2
А зачем? все равно их нельзя вызывать в потоке, нужна синхронизация для обращения к компонентам на форме. Следовательно, поток вообще не нужен, если всё подряд вызывать из Synchronize() - от него не будет никакого выигрыша, только головная боль.
0
 Аватар для Cyphermak
4 / 4 / 0
Регистрация: 21.04.2013
Сообщений: 124
19.11.2013, 21:02  [ТС]
да действительно(( просто есть куча разных функций которые должны работать динамически вот и предположил чтоб не писать потоки к каждой функции
а завернуть в функцию создание потока и передавать в него параметр в виде функции

я для примера привел код вверху на самом деле я даже не для работы с компонентами собирался использовать поток
0
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
20.11.2013, 09:57
Перегрузить конструктор потока
C++
1
2
3
4
__fastcall TMyThread(TMyFunc* _pMyFunc, bool CreateSuspended)
{
  pMyFunc = _pMyFunc; // сохраняем в свойстве потока
}
Соответственно, из Execute вызывать
C++
1
2
3
4
5
void __fastcall TMyThread::Execute( ничего не передаём, как обычно ) 
{
  FreeOnTerminate = true;
  (*pMyFunc)();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2013, 09:57
Помогаю со студенческими работами здесь

Как передать файл в функцию для записи/чтения (разные функции)
Собственно сабж. Во первых есть вот такой блок в main: ofstream f1(&quot;F1.txt&quot;); cout&lt;&lt;&quot;Введите...

Разные способы подключения файла, или как еще можно передать функции двумерный массив?
Программа считает сумму положительных элементов каждого столбца и сумму отрицательных элементов...

Создал поток. В нем выделил буффер. Поток выполнился, но из за буфера ругнулся.
В функции треда создал буфер char tbuf;но после того как тред выполнился выскочила ошибка...

Скопировать поток и добавить ошибки в поток
Здорова господа! Есть задачка: &quot;Скопируйте поток объектов типа Name_and_address и вставьте в...

Скопировать поток в поток
Есть ли возможность скопировать один поток в другой. Например int main() { ofstream...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. На мобильном - сканируйте QR-код. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru