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

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

Войти
Регистрация
Восстановить пароль
 
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
#1

Pthread взывать поток без параметров - C++

10.04.2014, 21:32. Просмотров 462. Ответов 5
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void RunClient(){
 
        int iret;
        const char *message = "Thread Run_Client()";
 
        if (!Running){
            try{
                _Running = true;
 
                iret = pthread_create(&_ThreadRunClient, NULL, Run_Client);
                pthread_join(_ThreadRunClient, NULL);
 
 
            }catch (exception& e){
                //_Running = false;
                //throw std::invalid_argument(e);
            }
        }
        else{
            //throw std::invalid_argument("Клиент уже остановлен");
        }
    }
Сама функция для потока выглядит так
C++
1
2
3
void* Run_Client(){
            
        }
Ошибка такого вида
NMClient.cpp: In member function ‘void NMClient::RunClient()’:
NMClient.cpp:74:62: error: cannot convert ‘NMClient::Run_Client’ from type ‘void* (NMClient:()’ to type ‘void* (*)(void*)’
iret = pthread_create(&_ThreadRunClient, NULL, Run_Client);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2014, 21:32     Pthread взывать поток без параметров
Посмотрите здесь:

Pthread, поток, передающий значение по указателю - C++
Создаётся поток, передающий значение по указателю: pthread_create (&pthread_id1, NULL, my_thread,(void *)arr); pthread_create...

Поток ввода без ошибок - C++
В чем состоит задача: нужно организовать ввод вещественных чисел в массив с помощью cin. И нужно, чтобы при вводе символа не подходящего...

Функция без параметров? - C++
Начал разбираться с библиотекой alglib для решения интеграла сложной функции. В документации нашел такой код, но не могу разобраться с...

Конструкторы с и без параметров - C++
Здравствуйте, Не могу понять где ошибка, на экран выводит мусор, а нужно бы нормальные человеческие числа.. #include <iostream> ...

Конструктор без параметров - C++
class stack { private: int top; // вершина стека int s; // массив в котором хранится стек public: stack (): top(0)...

Использование функции get() без параметров - C++
Добрый вечер! Помогите, пожалуйста, разобраться с примером. #include <iostream.h> int main () { char ch; while (...

Шестнадцатеричный вывод WORD и DWORD в поток без приведения к указателю - C++
Как сделать? Есть ли для этого потоковый манипулятор? Желательно, чтоб цифры A-F были в верхнем регистре и выводились старшие не значащие...

Что означает шаблон без параметров? - C++
Например тут http://www.cyberforum.ru/cpp-beginners/thread1914317.html#post10082610 увидел запись где аргументы шаблона пустые...

Изменение параметров конструктора без аргументов - C++
Как в конструкторе без параметров изменить значения из функции main?

Шаблоны без параметров, что это? - C++
Наткнулся во включаемом файле iosfwd в Visual Studio 2013 на такое определение:template<> struct char_traits<char>Вроде как похоже на...

Проблема с перегрузкой операторов '-' >> << и с конструктором без параметров - C++
Помогите пожалуйста, проблема с перегрузкой операторов '-' &gt;&gt; &lt;&lt;, возможно еще с конструктором без параметров наверно проблема #pragma...

Конструктор без параметров: не выводится строка в приведенном коде - C++
#include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &lt;iostream&gt; using namespace::std; class String { protected: enum { SZ = 80 };...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.04.2014, 21:50     Pthread взывать поток без параметров #2
Судя по всему функция Run_Client должна быть static.
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
10.04.2014, 22:08  [ТС]     Pthread взывать поток без параметров #3
Спасибо. Но появились новые проблемы. Мне нужно вызвать функцию без параметров в потоке
Текущий код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void RunClient(){
 
        int iret;
 
        if (!Running){
            try{
                _Running = true;
 
                iret = pthread_create(&_ThreadRunClient, NULL, Run_Client, NULL);
                pthread_join(_ThreadRunClient, NULL);
 
 
            }catch (exception& e){
                _Running = false;
                //throw std::invalid_argument(e);
            }
        }
        else{
            //throw std::invalid_argument("Клиент уже остановлен");
        }
    }
Сама функция
C++
1
2
3
static void *Run_Client(){
            
        }
Ошибка
NMClient.cpp: In member function ‘void NMClient::RunClient()’:
NMClient.cpp:73:68: error: invalid conversion from ‘void* (*)()’ to ‘void* (*)(void*)’ [-fpermissive]
iret = pthread_create(&_ThreadRunClient, NULL, Run_Client, NULL);
^
In file included from /usr/include/x86_64-linux-gnu/c++/4.8/bits/gthr-default.h:35:0,
from /usr/include/x86_64-linux-gnu/c++/4.8/bits/gthr.h:148,
from /usr/include/c++/4.8/ext/atomicity.h:35,
from /usr/include/c++/4.8/bits/basic_string.h:39,
from /usr/include/c++/4.8/string:52,
from NMClient.cpp:2:
/usr/include/pthread.h:232:12: error: initializing argument 3 of ‘int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)’ [-fpermissive]
extern int pthread_create (pthread_t *__restrict __newthread,
Если что, вызываемая функция private, функция создающая поток в public
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.04.2014, 22:14     Pthread взывать поток без параметров #4
Цитата Сообщение от diplomat1129 Посмотреть сообщение
Мне нужно вызвать функцию без параметров в потоке
У функции pthread_create() есть совершенно конкретные параметры вызова. И параметр, отвечающий за рабочую функцию имеет вполне определенную сигнатуру, т.е. должен получать функцию, которая возвращает void* и получает один аргумент void*. Если ничего передавать внутрь не надо, просто объявите ее так:
C++
1
static void *Run_Client(void*)
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
10.04.2014, 22:17  [ТС]     Pthread взывать поток без параметров #5
C++
1
static void *Run_Client(void*)
C++
1
iret = pthread_create(&_ThreadRunClient, NULL, Run_Client, void*);
NMClient.cpp: In member function ‘void NMClient::RunClient()’:
NMClient.cpp:73:64: error: expected primary-expression before ‘void’
iret = pthread_create(&_ThreadRunClient, NULL, Run_Client, void*);
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.04.2014, 22:24     Pthread взывать поток без параметров #6
Ну при вызове-то надо не void* писать, а хотя бы 0 или NULL.
Yandex
Объявления
10.04.2014, 22:24     Pthread взывать поток без параметров
Ответ Создать тему
Опции темы

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