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

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

Войти
Регистрация
Восстановить пароль
 
Devilox
3 / 3 / 0
Регистрация: 19.02.2014
Сообщений: 92
#1

Как заставить функцию выполняться в потоке - C++

10.03.2014, 17:27. Просмотров 293. Ответов 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
24
25
26
27
28
#include <iostream>
using namespace std;
 
#include <Windows.h>
 
DWORD WINAPI ThreadFunc(LPVOID lpParam) {
 
    return 0; 
}
 
int main() {
    HANDLE Threads[1];
 
    HANDLE Thread;
    DWORD ThreadParam = 1;
    DWORD ThreadId;
 
    Threads[0] = CreateThread(NULL, 0, ThreadFunc, &ThreadParam, 0, &ThreadId);
 
    if (Threads[0] == NULL) {
        cout << "Error!" << endl;
    }
 
    WaitForMultipleObjects(1, Threads, TRUE, INFINITE);
    CloseHandle(Threads[0]);
 
    return 0;
}
Но вот дальше я что-то не совсем понимаю, как работать с ним. Как заставить функцию выполняться в этом потоке?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2014, 17:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как заставить функцию выполняться в потоке (C++):

Как заставить функцию возвращать символьную строку? - C++
Всем доброго времени суток! Такой вопрос, есть задание, надо ввести с клавы какую-то строку, а потом в символьной функции для каждого слова...

Можно ли один раз создать функцию в потоке, а потом просто вызывать ее - C++
Не ругайтесь, я искал, не нашел ответа на такой вопрос. Я вот использую потоки следующим образом: void поток(){ while(true){ ...

Не могу заставить функцию str.c_str() коректно работать - C++
Доброго времени суток , мне нужно написать программу которая сравнивает введенную букву с словом(часть кода виселицы ) , нонепонятно почему...

Не могу создать поток( Нужно чтобы функция запускается в потоке и работала там пока не закроем в потоке) - C++
хм.. не могу создать поток в c++ и направить туда. Нужно чтобы функция запускается в потоке и работала там пока не закроем в потоке.

Перегрузка операций (Создать класс вещественных чисел (double); определить оператор +, как функцию-элемент и – как дружественную функцию) - C++
помогите решить пожалуйста Задание 2. Бинарная операция Создать класс вещественных чисел (double).. Определить оператор +, как...

Как правильно вызвать функцию с указателем на другую функцию как параметр - C++
Вот вариант: double f(double x) { ... } double k(double (*f)(double), double y) { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DrOffset
7147 / 4288 / 966
Регистрация: 30.01.2014
Сообщений: 7,091
10.03.2014, 17:56 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Devilox Посмотреть сообщение
Как заставить функцию выполняться в этом потоке?
Devilox, вызывай ее из ThreadFunc и все. У тебя сейчас поток создается и сразу завершается, т.к. в ThreadFunc ничего нет.
1
Devilox
3 / 3 / 0
Регистрация: 19.02.2014
Сообщений: 92
10.03.2014, 18:45  [ТС] #3
Да, точно, работает Когда не работало, я не добавил закрытие потока, потом дописал, а проверить забыл

Добавлено через 29 минут
Вот только возникает другая проблема: функция ThreadFunc не имеет доступа практически ни к чему, поэтому, если я вставлю туда другую функцию, то ничего работать не будет. Можно ли этого избежать, используя ссылки?
0
DrOffset
7147 / 4288 / 966
Регистрация: 30.01.2014
Сообщений: 7,091
10.03.2014, 18:54 #4
Devilox, для доступа к внешним данным есть параметр LPVOID lpParam. Передаешь что тебе надо через него, например указатель на объект класса и работаешь.
1
Devilox
3 / 3 / 0
Регистрация: 19.02.2014
Сообщений: 92
10.03.2014, 19:02  [ТС] #5
Спасибо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2014, 19:02
Привет! Вот еще темы с ответами:

подскажите как выполнить метод в потоке - C++
class T1 { public : void metod1(); void metod2(); } void T1::metod1() { ...

Как создать объект класса в потоке? - C++
Как создать объект класса в потоке? Это вообще возможно?

Как правильно переместить позицию в потоке? - C++
Почему выводится на консоль 52, а не цифра 4? #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; void main () { ...

Как открыть файл в потоке ifstream? - C++
если имя файла храниться в переменной String s;


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.03.2014, 19:02
Ответ Создать тему
Опции темы

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