I
ironpingwin
Hi!
I'd like to make few threads which will run in the same time in C++.
I try to use boost library v 1.34.1 (it can't be newest, because I
compile on remote machine, which is not administrated by me). In this
version there isn't detach() function.
How to run functions from two different class in the same time?
In my example two go() function from classes first and second should
run in the same time, but they don't.
Thanks for any help.
#include <boost/thread/thread.hpp>
#include <boost/thread/xtime.hpp>
#include <iostream>
class first {
public:
void operator()() { }
void go () {
for (int i=0; i<= 10; ++i) {
boost::xtime xt;
boost::xtime_get(&xt, boost::TIME_UTC);
xt.sec += 1;
boost::thread::sleep(xt);
std::cout << "first" << std::endl;
}
}
};
class second {
public:
void operator()() { }
void go () {
for (int i=0; i<= 10; ++i) {
boost::xtime xt;
boost::xtime_get(&xt, boost::TIME_UTC);
xt.sec += 1;
boost::thread::sleep(xt);
std::cout << "second" << std::endl;
}
}
};
int main(int argc, char* argv[])
{
first f;
second s;
boost::thread t1(f);
boost::thread t2(s);
f.go();
s.go();
return 0;
}
I'd like to make few threads which will run in the same time in C++.
I try to use boost library v 1.34.1 (it can't be newest, because I
compile on remote machine, which is not administrated by me). In this
version there isn't detach() function.
How to run functions from two different class in the same time?
In my example two go() function from classes first and second should
run in the same time, but they don't.
Thanks for any help.
#include <boost/thread/thread.hpp>
#include <boost/thread/xtime.hpp>
#include <iostream>
class first {
public:
void operator()() { }
void go () {
for (int i=0; i<= 10; ++i) {
boost::xtime xt;
boost::xtime_get(&xt, boost::TIME_UTC);
xt.sec += 1;
boost::thread::sleep(xt);
std::cout << "first" << std::endl;
}
}
};
class second {
public:
void operator()() { }
void go () {
for (int i=0; i<= 10; ++i) {
boost::xtime xt;
boost::xtime_get(&xt, boost::TIME_UTC);
xt.sec += 1;
boost::thread::sleep(xt);
std::cout << "second" << std::endl;
}
}
};
int main(int argc, char* argv[])
{
first f;
second s;
boost::thread t1(f);
boost::thread t2(s);
f.go();
s.go();
return 0;
}