class Worker { public: Worker(vector<int> &vec, int size):_vec(vec), _size(size) { } void operator ()() { while(_vec.size() < _size) { _vec.push_back(0); boost::this_thread::sleep(boost::posix_time::seconds(1)); } cout << "append " << _vec.size() << " elemenets " << endl; } vector<int> &Vec() { return _vec; } private: vector<int> &_vec; int _size; }; int _tmain(int argc, _TCHAR* argv[]) { vector<int> v1, v2; Worker w1(v1, 5), w2(v2, 8); boost::thread t1(w1), t2(w2); t1.join(); t2.join(); cout << v1.size() << endl; cout << v2.size() << endl; system("pause"); return 0; }