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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести на экран номера всех элементов массива, не совпадающих с максимальным элементом http://www.cyberforum.ru/cpp-beginners/thread742241.html
Помогите решить используя одномерный массив) Дана последовательность из n действительных чисел. Вывести на экран номера всех элементов, не совпадающих с максимальным.
C++ Функции сравнения строк Задача: Реализуйте список строк. Напишите функции для подсчета количества строк в списке: а. начинающихся и оканчивающихся одной и той же буквой б. начинающихся с той же буквы, что и следующая строка в. совпадающих с последней строкой. Список реализован, первые 2 функции вроде бы, проверьте пожалуйста, кому не сложно, и помогите с третьей пожалуйста. Проект приложен. А еще. если не... http://www.cyberforum.ru/cpp-beginners/thread742232.html
Вычислить сумму элементов в области 1-2 (Не работает программа) C++
Дан двухмерный массив (вектор) n целых чисел. Ввод функцией void inMas1(int& n,int a), вывод массива функцией void outMas1(int n,int a) Если условие выполнено (функция типа bool), то выполнить пребразование (функция типа void) и выполнить вычисление (функция типа int). Вычислить сумму элементов в области 1-2 . Сумма не ищется #include<iostream> #include<locale> #define N 100 using...
Создание блок-схем к программам С++ . Нужно построить 2 блок схемы к программам! C++
Помогите плиз создать Блок-схему программы. Функция , которая вводит с клавиатуры последовательность целых чисел и после ввода последнего числа выводит на печать в главной функции среднее арифметическое всех введенных чисел. Параметром функции является количество вводимых чисел. #include<iostream.h> double srarifm(int n); int n,b; do{
C++ Вычислить номер максимального по модулю элемента массива http://www.cyberforum.ru/cpp-beginners/thread742213.html
В одномерном массиве состоящей из n действительных элементов, вычислить: 1) Номер максимального по модулю элемента массива; 2) Сумму элементов массива, расположенных после первого положительного элемента
C++ Сумма диагоналей матрицы как найти сумму элементов каждой диагонали матрицы, параллельной побочной? подробнее

Показать сообщение отдельно
Gus
24 / 35 / 2
Регистрация: 17.02.2009
Сообщений: 364

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

23.12.2012, 14:12. Просмотров 630. Ответов 0
Метки (Все метки)

Доброго времени суток. Как то я запиливал 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... Но к сожалению, функция не входит в поток, а выполняется, после чего только управление возвращается в главную функцию
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru