Как использовать потоки или сигналы в С++ под Линукс

  • Автор темы Sergey_24
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

Sergey_24

#1
Всем привет. Может кто-нибудь знает как можно в обработчик сигналов sa_handler(из структуры sigaction), присвоить функцию класса. Или в потоковую функцию pthread_create третьим аргументом вызывать функцию класса. A то уже 3 день ничего путного в инете найти не могу ...
 

Kmet

Java Team
25.05.2006
1 036
8
#2
в общем случае никак, в функцию член неявным образом передается указатель на класс (this), и следовательно мы получаем азлиные сигнатуры. передать можноуказатель на статическую функцию-член. вроде бы boost::function позволяет решать эту проблему, но не разбирался.
 
S

Sergey_24

#3
в общем случае никак, в функцию член неявным образом передается указатель на класс (this), и следовательно мы получаем азлиные сигнатуры. передать можноуказатель на статическую функцию-член. вроде бы boost::function позволяет решать эту проблему, но не разбирался.
А можно что то ещё использовать вместо сигналов или потоков?? ... У меня "одна часть" программы рисует на экране, а другая "часть" ждёт нажатия кнопки(влево,вправо...) . Короче змейку я пишу ... И хотелось бы именно на С++ написать, а не на Си.
 
S

Sergey_24

#6
не совсем понимаю в чем сложность, программирования потоков на с++
Ну в общем то разобрался я как можно реализовать программу с помощью потоков, но теперь возник такой вопрос:
Вот отрывок из кода:

Animal* snake= new Animal(9); // Создаю 9 экземпляров класса(9 штук звеньев змейки)
void* dir_ptr = &snake; // void* чтобы четвёртым аргументом в функцию pthread_create передать

Дальше создаю новый экземпляр, чтобы взять адрес экземпляра snake в функции потока(ведь надо же мне как то в потоке использовать 9 экземпляров созданного в начале программы класса)
Animal* tmp = ((Animal*)(&dir_ptr));

А далее, просто для отладки, пытаюсь в цикле вывести все данные на экран(т.е. поля всех 9 экземпляров класса)

tmp->print_list();

Только выводится немного не то. А точнее выводяться переменные ДЕСЯТИ экземпляров класса,вместо 9. Может знаешь в чём тут дело?
 
Статус
Закрыто для дальнейших ответов.