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

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

Войти
Регистрация
Восстановить пароль
 
mhg
2 / 2 / 2
Регистрация: 21.04.2013
Сообщений: 189
#1

Аргументы потоку pthread - C++

30.10.2015, 15:16. Просмотров 153. Ответов 1
Метки нет (Все метки)

Добрый день,

нужен совет как лучше написать запуск потоков

структура для передачи в поток
C++
1
2
3
4
5
struct thread_arg
{
   CTCPServer* pServer;
   int sock_desc;
};
C++
1
2
3
4
void start()
{
run_new_pthread();
}
здесь получается, что объект thr_arg и pthread_t thread разрушаются, поле запуска потока.
Как их лучше сохранить? отдельно в контейнере?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void run_new_pthread()
{
    thread_arg thr_arg;
    thr_arg.pServer = this;
    thr_arg.sock_desc = __accept();
 
    pthread_t thread;
    int result = pthread_create(&thread, NULL,  pthr_func, (void*)&thr_arg);
    if (result != 0) {
        perror("Creating the thread: ");
    }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2015, 15:16     Аргументы потоку pthread
Посмотрите здесь:

Pthread - C++
при компиляции код работает и все выводит и выполняет алгоритм но стоит запустить с командной строки, выдает ошибку "Запуск программы...

не работает pthread.h в Dev-c++ - C++
не понимаю что не так. у меня винда. Программу пишу на Dev-cpp: вот код: #include<stdio.h> #include<pthread.h> class CData {...

библиотека pthread.h в Code::Blocks - C++
не могу найти как подключить библиотеку pthread.h в Code::Blocks. Помогите,пожалуйста, кто знает.

Pthread взывать поток без параметров - C++
void RunClient(){ int iret; const char *message = "Thread Run_Client()"; if (!Running){ try{ _Running = true; ...

Заставить pthread подождать, до выполнения условия - C++
есть поток типы pthread. Нужно заставить его подождать, до выполнения условия

Pthread функция потока внутри класса - C++
Нужно чтобы функция pthread_create принимала на входе функцию-член класса, в котором я вызываю pthread_create собственно. Так сделать не...

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

Присоединение к потоку - C++
Присоединение к потоку - это приостановка потока выше на один уровень иерархии до конца работы другого? Т.е. когда мы вызываем t.join() в...

Передача функции потоку - C++
Привет, всем. Пишу простую программу, использующую 2 потока для вычисления. При запуске выводится ошибка (видимо, я неправильно функцию...

Pthread.h, как вернуть из потоковой функции значение типа double? - C++
Всем привет. Не понимаю, как вернуть из потоковой функции значение типа double: #include <pthread.h> #include <stdio.h> #include...

Как функция get() перемещается по потоку? - C++
 while(in) {   /* При достижении конца файла потоковый объект in примет значение false. */   in.get(ch);   if(in) cout << ch;  } ...

Как ограничить функции или потоку использование процессора? - C++
Это если кратко. Есть у меня очень тяжёлая функция, которая выполняется в отдельном потоке в бесконечном цикле. При этом она жрёт весь...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6913 / 4106 / 936
Регистрация: 30.01.2014
Сообщений: 6,904
30.10.2015, 16:10     Аргументы потоку pthread #2
Если
Цитата Сообщение от mhg Посмотреть сообщение
run_new_pthread()
- это функция класса, то передавай в pthread_create последним параметром this.
а состояние аргументов потока (thread_arg) храни как состояние этого класса.
В поточной функции скастишь void * data к типу твоего класса и сможешь работать с thread_arg.
Наверное захочется сделать thread_arg приватным, тогда функцию потока лучше сделать статической в этом же классе. Такая функция через указатель data будет иметь доступ к приватным полям.
Yandex
Объявления
30.10.2015, 16:10     Аргументы потоку pthread
Ответ Создать тему
Опции темы

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