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

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

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

Author24 — интернет-сервис помощи студентам
Добрый день допустем есть хедер 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2016, 00:14
Ответы с готовыми решениями:

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

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

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

Паралельные потоки к форме подскажите
нужно изменить невидимость набора элемонтов собранные в Convas под именем "lampochka"...

4
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
07.12.2016, 00:39 2
Выложенный код непонятен. Тут:
Цитата Сообщение от 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  [ТС] 3
Назвоние класса пускай будет 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 4
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
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
07.12.2016, 11:29 5
NewThread не может быть полноценным членом класса, потому что прототип должен соответствовать требованиям WinAPI. Можешь попробовать сделать её static, если доступ к полям не нужен. А для чего proxyFunction() - не понятно.
0
07.12.2016, 11:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2016, 11:29
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru