Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 02.07.2009
Сообщений: 70

Паралельные потоки, с++ vs Windows

07.12.2016, 00:14. Показов 708. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день допустем есть хедер MyClass1.h в котором:
C++
1
2
3
4
5
6
class MyClass
{
private:
void F1()
void F2();
}
И есть MyClass1.cpp в котором:
C++
1
2
3
4
5
6
7
void MyClass1::F1()
{
};
void MyClass1::F2()
{
 
};
Я хочу в ф-и F1 создать паралельную нить исполнения из ф-и F2, для этого писал:
C++
1
2
3
4
void MyClass1::F1()
{
  CreateThread(NULL, 0, &F2, (LPVOID)1 , 0, 0);
};
Ругается на F2. В целом я все-таки смог создать паралельный поток, но получился какой-то дикий костыль-паравозик
CreateThread работает только из ф-и открытой непосредственно в .cpp файле (не в хедере) и с ф-ей аргументом открытой в .cpp файле. Получается что-то следующее:

C++
1
2
3
4
5
6
7
8
9
10
11
12
void MyClass1::F1()
{
 F3();
};
void F3()
{
 CreateThread(NULL, 0, &F4, (LPVOID)1 , 0, 0);
}
 
void F4()
{
}
Подскажите пожалуйста, как сделать это по нормальному ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.12.2016, 00:14
Ответы с готовыми решениями:

Паралельные Потоки
Доброго всем суток! Возник вопрос реализации задачи по использованию параллельных потоков. Вопрос могут ли быть проблемы при написании...

паралельные потоки
class MyThread extends Thread{ public int id; MyThread(int id){ this.id = id; } public void run(){ for(int i = 0; i...

Обуздать паралельные потоки
Не могу понять, что не так, чего не хватает, пытаюсь отправить не сколько запросов одновременно (залить картинку на хостинг) они...

4
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
07.12.2016, 00:39
Выложенный код непонятен. Тут:
Цитата Сообщение от Enacin Посмотреть сообщение
class MyClass
Тут:
Цитата Сообщение от Enacin Посмотреть сообщение
MyClass1::
Так какое имя у твоего класса? Точки с запятой - где нужно не стоят, где не нужно - стоят.
Указатель на метод класса - это не указатель на функцию. Для его использования нужен объект класса.
Добавлено через 5 минут
Да, и вопросы, по таким потокам, уместнее там задавать: https://www.cyberforum.ru/win-api/
0
0 / 0 / 0
Регистрация: 02.07.2009
Сообщений: 70
07.12.2016, 11:19  [ТС]
Назвоние класса пускай будет MyClass, он действтельно везде один и тот же.
Точки с запятой пропустил, потому что писал псевдокодом, думал будет понятно.
Вот та самая часть реальной рабочей проги (.cpp) :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DWORD WINAPI newThread(CONST LPVOID lpParam) 
{ 
   while (true) 
    { 
      Sleep(2000); 
      UIOperations *testUI = (UIOperations*)lpParam; 
      testUI->printCircle(1, 1); 
    } 
   return 0; 
} 
 
void proxyFunction(UIOperations* UI) 
{ 
   CreateThread(NULL, 0, &newThread, (LPVOID)UI, 0, 0); 
} 
 
void UDPEvents::creatMessageReadingThread() 
{ 
   proxyFunction(uiOperations); 
}
Хочу чтоб ф-я newThread была частью класса, и обойтись без "транзитной" функции proxyFunction.
0
Заблокирован
07.12.2016, 11:27
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class A
{
public:
    static DWORD WINAPI threadFunc(LPVOID param)
    {
        for (int i = 0; i < *(int*)param; ++i)
        {
            cout << i << endl;
            Sleep(300);
        }
        return 0;
    }
};
 
int main()
{
    int size = 10;
    CreateThread(NULL, 0, A::threadFunc, &size, 0, 0);
    for (int i = 0; i < size; ++i)
    {
        cout << i << endl;
        Sleep(300);
    }
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.12.2016, 11:29
NewThread не может быть полноценным членом класса, потому что прототип должен соответствовать требованиям WinAPI. Можешь попробовать сделать её static, если доступ к полям не нужен. А для чего proxyFunction() - не понятно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2016, 11:29
Помогаю со студенческими работами здесь

Паралельные потоки к форме подскажите
нужно изменить невидимость набора элемонтов собранные в Convas под именем &quot;lampochka&quot; lampochka.Opacity = 0; нужно в отдельном...

Паралельные потоки и доступ к очереди из потока
Задание простое. Первый поток кидает число в очередь, засыпает на 3 сек. Второй поток выводит число в консоль и удаляет его из очереди. ...

паралельные потоки команд(класс TThread)
Или это я туплю или чего-то не знаю Как после вызова процедуры добиться того чтобы родительская процедура не ждала пока выполниться...

Потоки windows
#include &lt;windows.h&gt; #include &quot;iostream&quot; #include &lt;winnt.h&gt; #include &lt;tchar.h&gt; #include &lt;cstdlib&gt; HINSTANCE hInst; int...

паралельные приложения
такой вопросик: можно ли создать проект котором при нажатие на .exeшник будет запускаться одно приложение, а потом при нажатии на любую...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
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. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru