I wrote a simple sample program that produces the following output:
% g++ -std=c++14 -losgViewer -pthread a.cpp && time ./a.out
Thread 5 done
Thread 9 done
Thread 4 done
Thread 0 done
Thread 6 done
Thread 15 done
Thread 12 done
Thread 13 done
Thread 11 done
Thread 7 done
Thread 8 done
Thread 1 done
Thread 3 done
Thread 10 done
Thread 14 done
Thread 2 done
./a.out 161.06s user 0.02s system 392% cpu 41.036 total
% g++ -std=c++14 -losgViewer -pthread -DSINGLETHREADED a.cpp && time ./a.out
Thread 6 done
Thread 13 done
Thread 9 done
Thread 8 done
Thread 15 done
Thread 10 done
Thread 11 done
Thread 14 done
Thread 5 done
Thread 4 done
Thread 1 done
Thread 3 done
Thread 7 done
Thread 12 done
Thread 2 done
Thread 0 done
./a.out 121.23s user 0.02s system 99% cpu 2:01.92 total
The program looks like this:
--------
#include <future>
#include <iostream>
#include <vector>
#include <osgViewer/Viewer>
#include <osgViewer/ViewerBase>
int main() {
constexpr int numThreads = 16;
osgViewer::Viewer viewer;
#ifdef SINGLETHREADED
viewer.setThreadingModel(osgViewer::ViewerBase::ThreadingModel::SingleThreaded);
#endif
viewer.realize();
const auto compute = [] (const int i) {
for(volatile int n = 0; n != 1'000'000'000; ++n) {
++n;
--n;
}
std::cout << "Thread " << i << " done\n";
};
std::vector<std::future<void>> futures;
for(int i = 0; i != numThreads; ++i) {
futures.push_back(std::async(std::launch::async, compute, i));
}
for(auto & future: futures) {
future.wait();
}
return 0;
}
--------
Christoph
On 09/25/2016 01:42 AM, Fabian Wiesel wrote:
int main(int argc, char **argv) {
std::vector<int> myvector(1024);
osgViewer::Viewer viewer;
viewer.setSceneData( node );
viewer.setThreadingModel(SingleThreaded);
viewer.realize(); // calling ViewerBase::setUpThreading() ->
OpenThreads::SetProcessorAffinityOfCurrentThread(0); -> pthread_setaffinity_np(...)
// Create Threads
for (int i = 0; i < 100; ++i) pthread_create(...)
viewer.run()
pthread_join(...);
}
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org