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

не работает поток thread (функция работает без потока!) и 1 оффтоп - C++

Восстановить пароль Регистрация
 
Gus
 Аватар для Gus
24 / 35 / 2
Регистрация: 17.02.2009
Сообщений: 364
23.12.2012, 14:12     не работает поток thread (функция работает без потока!) и 1 оффтоп #1
Доброго времени суток. Как то я запиливал thread функцию, с учетом того что у меня будет массив указателей на класс thread. почему то, функцию указатель которой я передавал в конструктор потока работала не вне основного потока как ожидалось, а работала так же последовательно, как и был бы как простой вызов т.е выполняется тело функции, и после возвращения аргумента выполнение программы продолжалось.
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
Класс потока, который должен содержать все необходимые данные о потоке (для оперативного использования)
#ifndef CHEB_THREAD_H_INCLUDED
#define CHEB_THREAD_H_INCLUDED
#include <thread>
 
class cheb_thread
{
public:
int thID; //Ид потока.
char name_thread[25];
void *func;
std::thread *c_thread; //переменная
bool thread_active; //Логическая переменная, активен ли поток?
int start_thread();
int thread_destroy();
int thread_activate();
};
 
#endif // CHEB_THREAD_H_INCLUDED
 
описание функции start_thread 
#include <iostream>
#include <thread>
#include "cheb_thread.h"
using namespace std;
int cheb_thread::start_thread()
{
    void(*f)()=(void(*)())func;
    cout <<"IT IS RUN!"<<endl;
    c_thread=new std::thread(f);
    c_thread->join();
}
 
Определение класса cheb_thread в головном классе программы MainClass 
cheb_thread *x_thread;
 
Инициализация работы класса cheb_thread
   ch21->x_thread=new cheb_thread; //thread(&msg_listen);
    ch21->x_thread->start_thread();
    ch21->x_thread->func=(void *)&msg_listen;
данный пример выдает core dumped, хотя... память выделил для каждого из класса.
еще один вопрос (оффтоп)
При обьявлении класса в классе иногда возникает ошибка такая как...
C++
1
/cheb21client/main.h|27|ошибка: «TEST» не является именем типа|
хотя
C++
1
2
3
class TEST{
public:
};
Благодарю за помощь, и любые подсказки.

Добавлено через 2 часа 45 минут
up!!!

Добавлено через 14 часов 3 минуты
up!!!

Добавлено через 2 часа 45 минут
Fixed... Но к сожалению, функция не входит в поток, а выполняется, после чего только управление возвращается в главную функцию
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2012, 14:12     не работает поток thread (функция работает без потока!) и 1 оффтоп
Посмотрите здесь:

C++ не работает функция!
C++ Не работает функция в С++
STL. Не работает вывод через << в поток когда использую итераторы :( C++
C++ Нужно закрыть поток thread и открыть новый для sleep
C++ 11 передача ссылки в поток thread C++
Не работает поток C++
Ошибка при создании потока std::thread C++
C++ Std::thread как усыпить/ пробудить поток?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 21:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru