LINUX.ORG.RU

Как через boost::thread запустить функцию член класса с параметрами


0

1

В неком классе master есть функция

void master::Split (vector <Tycho2Data> Stars, double ErrorBox, double DeltaMag, unsigned long Start , unsigned long Stop);

Как запустить исполнение этой функции в отдельном потоке с помощью boost?

Заранее большое спасибо.


Даже могу подробнее, если надо. Пример:

#include <boost/bind.hpp>
#include <boost/thread.hpp>

#include <vector>
#include <iostream>

struct S
{
	int val;
	inline void foo (std::vector<int> arg1, double arg2, double arg3, unsigned long arg4, unsigned long arg5)
	{
		std::cout << val << " " << arg5 << std::endl;
	}
};

int main()
{
	std::vector<int> bar;
	bar.push_back(1);
	S obj;
	obj.val = 999;

	boost::thread thr(boost::bind(&S::foo, boost::ref(obj), bar, 0.0, 1.0, 2, 3));
	thr.join();
	return 0;
}

Как до этого додуматься: скомбинировать информацию с этой страницы:

If you wish to construct an instance of boost::thread with a function or callable object that requires arguments to be supplied, this can be done using boost::bind:

void find_the_question(int the_answer);
boost::thread deep_thought_2(boost::bind(find_the_question,42));

и примеры отсюда.

gizzka ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.