Как создать поток с данными? - PullRequest
4 голосов
/ 28 апреля 2009

У меня проблемы с boost :: bind и созданием потоков.

По сути, я хотел бы вызвать функцию "сканирования" для объекта "Сканер", используя привязывать.

Примерно так:

  Scanner scanner;
   int id_to_scan = 1;

   boost::thread thr1(boost::bind(&scanner::scan));

Однако меня сбивают с толку синтаксис. Как передать данные в сканирование? Как часть конструктора?

1 Ответ

9 голосов
/ 28 апреля 2009

Имейте в виду, что первым аргументом любой функции-члена является объект.

Итак, если вы хотите позвонить:

scanner* s;
s->scan()

с привязкой вы бы использовали:

boost::bind(&scanner::scan, s);

Если вы хотите позвонить:

s->scan(42);

используйте это:

boost::bind(&scanner::scan, s, 42);

Поскольку я часто хочу, чтобы связывание вызывалось для объекта, создающего объект связывания, я часто делаю это:

boost::bind(&scanner::scan, this);

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...