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

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

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

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

29.01.2013, 22:51. Просмотров 1198. Ответов 29
Метки нет (Все метки)

хм.. не могу создать поток в c++ и направить туда. Нужно чтобы функция запускается в потоке и работала там пока не закроем в потоке.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2013, 22:51
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не могу создать поток( Нужно чтобы функция запускается в потоке и работала там пока не закроем в потоке) (C++):

Функция в потоке - C++
Помогите разобраться с потоками : void F(bool x, int i, bool y) {} int main() { _beginthread ... // Как мне...

Функция класса в потоке - C++
Здравствуйте, не как не могу запустить функцию класса в потоке. Длею так. прототип void Tcp_Process(); ...

Создать приложение, в отдельном потоке вычисляющее значение w и непрерывно обновляющее его в потоке - C#
Ребят, с потоками не работал не когда. Есть задание , я понимаю что хотят, а вот как сделать потоками хз . Создайте приложение, в...

Нужно чтобы в потоке не было обращения к визуальным компонентам - Delphi
Ребят выполнить вот это действие в потоке procedure TForm1.Button1Click(Sender: TObject); var i:integer; s:string; begin ...

Что нужно изменить, чтобы процедура запускалась с параметрами в новом потоке? - PascalABC.NET
Ошибка на 10 строке: Ожидалась функция, встречена процедура ADD Что нужно изменить, что бы процедура запускалась с параметрами в новом...

Потоки, эвенты, делегаты. Преобразовать код так, чтобы функция вызывалась в отдельном потоке - C#
доброго времени суток. изначально была функция, которая выглядит примерно вот так: public MyModel ReturnList( int id ) { ...

29
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 22:54 #2
компилятор у вас какой?
0
Мыша
4 / 4 / 0
Регистрация: 03.03.2011
Сообщений: 192
29.01.2013, 22:56  [ТС] #3
Цитата Сообщение от Kgfq Посмотреть сообщение
компилятор у вас какой?
стандартный на visual studio 2012
0
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 23:03 #4
Мыша, тогда process.h и _beginthread в помощь
0
grindaah
20 / 20 / 0
Регистрация: 25.05.2011
Сообщений: 62
29.01.2013, 23:04 #5
А что именно не получается?

C++
1
2
3
4
5
6
HANDLE thread1;
 
thread1 = ::CreateThread(NULL, 0, 
                                    thread_handler
                      , 0
                      , 0, NULL);
где thread_handler - функция вида:

C++
1
2
3
4
5
DWORD WINAPI thread_handler(LPVOID lpParam)
{
while (какое-то условие)
    что-то там делает
}
1
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 23:06 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <process.h>
 
void f(void *data)
{
    std::cout << "yep " << *(int*)data << std::endl;
}
 
int main()
{
    int a = 2;
    _beginthread(f, 0, &a);
    system("pause");
    return 0;
}
1
grindaah
20 / 20 / 0
Регистрация: 25.05.2011
Сообщений: 62
29.01.2013, 23:07 #7
Ps #include <windows.h>
pps думаю все же апишные вызовы подразумеваются
0
Мыша
4 / 4 / 0
Регистрация: 03.03.2011
Сообщений: 192
29.01.2013, 23:11  [ТС] #8
Цитата Сообщение от grindaah Посмотреть сообщение
А что именно не получается?

C++
1
2
3
4
5
6
HANDLE thread1;
 
thread1 = ::CreateThread(NULL, 0, 
                                    thread_handler
                      , 0
                      , 0, NULL);
где thread_handler - функция вида:

C++
1
2
3
4
5
DWORD WINAPI thread_handler(LPVOID lpParam)
{
while (какое-то условие)
    что-то там делает
}
а можно поподробнее о thread_handler, тоесть как запустить поток? и передать туда функцию?

Добавлено через 51 секунду
Цитата Сообщение от Kgfq Посмотреть сообщение
C++
1
2
3
    system("pause");
 
}
зачем нам это?
0
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 23:17 #9
Мыша, всего лишь что бы программа не вышла после завершения.
0
Мыша
4 / 4 / 0
Регистрация: 03.03.2011
Сообщений: 192
29.01.2013, 23:20  [ТС] #10
Цитата Сообщение от Kgfq Посмотреть сообщение
Мыша, всего лишь что бы программа не вышла после завершения.
ясно, а вот мне нужно запустить функцию где параметры не void *data и как работает _beginthread
0
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 23:22 #11
Мыша, _beginthread запускает только функции вида void name(void *). А уже из этого потока запустите нужную
0
Мыша
4 / 4 / 0
Регистрация: 03.03.2011
Сообщений: 192
29.01.2013, 23:29  [ТС] #12
Цитата Сообщение от Kgfq Посмотреть сообщение
Мыша, _beginthread запускает только функции вида void name(void *). А уже из этого потока запустите нужную
тоесть просто вызвать нужную функцию ? вот так?
C++
1
2
3
4
void f(void *data)
{
   _process();
}
0
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 23:31 #13
Мыша, да

Добавлено через 36 секунд
Мыша, 2 поток работает параллельно с основным. Почти все, что можно в основном - можно и в параллельном
0
Мыша
4 / 4 / 0
Регистрация: 03.03.2011
Сообщений: 192
29.01.2013, 23:32  [ТС] #14
Цитата Сообщение от Kgfq Посмотреть сообщение
Мыша, да

Добавлено через 36 секунд
Мыша, 2 поток работает параллельно с основным. Почти все, что можно в основном - можно и в параллельном
_beginthread(f, 0, &a); ругаеться на &a
0
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 23:33 #15
Мыша, а код весь? И код ошибки?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2013, 23:33
Привет! Вот еще темы с ответами:

Работа с Dictionary в одном потоке, при этом он может изменятся в другом потоке - C#
Здравствуйте! Я делаю лабу сервер распределенных вычислений в сети. В одном потоке ожидаю клиентов и на каждого клиента создаю поток. ...

GDI+. Почему в отдельном потоке картинки сохраняются как белые прямоугольники, а в основном потоке - всё Ок? - Delphi
Всем привет, делаю функцию уменьшения картинок при помощи библиотеки GDI+, в отдельном потоке происходит уменьшение картинки и её...

Элементы управления, созданные в одном потоке, не могут быть родительскими для элемента управления в другом потоке - C#
Привет :) Есть задача - нужно динамически добавлять компоненты. Все работает хорошо. Но если добавлять через цикл то начинает зависать...

Таймер не запускается в отдельном потоке - C#
У меня есть поток, в котором в при определенных условиях должен запустится таймер, но он почему то не запускается. Вот упрощенный...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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