本文整理汇总了C++中Threads::begin方法的典型用法代码示例。如果您正苦于以下问题:C++ Threads::begin方法的具体用法?C++ Threads::begin怎么用?C++ Threads::begin使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Threads
的用法示例。
在下文中一共展示了Threads::begin方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main()
{
static const int NUM_THREADS = 64;
typedef boost::array<boost::thread, NUM_THREADS> Threads;
std::cout<<"hardware concurrency "<<boost::thread::hardware_concurrency()<<std::endl;
std::cout<<"threads "<<NUM_THREADS<<std::endl;
std::cout<<"iterations per threads "<<NUM_IT<<std::endl;
volatile int i = 0;
boost::barrier barrier(NUM_THREADS);
Threads threads;
for(Threads::iterator it = threads.begin(); it != threads.end(); ++it)
{
*it = boost::thread(boost::bind(&IncThreadFunc, &barrier, &i));
}
for(Threads::iterator it = threads.begin(); it != threads.end(); ++it)
{
(*it).join();
}
std::cout<<"result "<<i<<" expected "<<(NUM_THREADS*NUM_IT)<<" ("<<(NUM_THREADS*NUM_IT-i)<<")"<<std::endl;
return 0;
}
示例2: main
int main()
{
static const int NUM_THREADS = 64;
typedef boost::array<boost::thread, NUM_THREADS> Threads;
std::cout<<"hardware concurrency "<<boost::thread::hardware_concurrency()<<std::endl;
std::cout<<"threads "<<NUM_THREADS<<std::endl;
std::cout<<"iterations per threads "<<NUM_IT<<std::endl;
volatile int i = 0;
boost::condition_variable cond;
boost::mutex mut;
volatile int started = 0;
Threads threads;
for(Threads::iterator it = threads.begin(); it != threads.end(); ++it)
{
*it = boost::thread(boost::bind(&IncThreadFunc, &started, &i, &cond, &mut));
}
while(started < NUM_THREADS)
{
boost::this_thread::sleep(boost::posix_time::milliseconds(10));
}
cond.notify_all();
for(Threads::iterator it = threads.begin(); it != threads.end(); ++it)
{
(*it).join();
}
std::cout<<"result "<<i<<" expected "<<(NUM_THREADS*NUM_IT)<<" ("<<(NUM_THREADS*NUM_IT-i)<<")"<<std::endl;
return 0;
}
示例3: gdbmiThreadList
std::string gdbmiThreadList(CIDebugSystemObjects *debugSystemObjects,
CIDebugSymbols *debugSymbols,
CIDebugControl *debugControl,
CIDebugAdvanced *debugAdvanced,
std::string *errorMessage)
{
Threads threads;
ULONG currentThreadId;
if (!threadList(debugSystemObjects, debugSymbols, debugControl,
debugAdvanced, &threads, ¤tThreadId, errorMessage))
return std::string();
std::ostringstream str;
str << "{threads=[";
const Threads::const_iterator cend = threads.end();
for (Threads::const_iterator it = threads.begin(); it != cend; ++it)
it->formatGDBMI(str);
str << "],current-thread-id=\"" << currentThreadId << "\"}";
return str.str();
}
示例4: main
//.........这里部分代码省略.........
osg::Vec3 center(0.5f,0.5f,0.5f);
float diameter = 1.0f;
osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFiles(arguments);
if (loadedModel.valid())
{
mainGroup->addChild(loadedModel.get());
center = loadedModel->getBound().center();
diameter = loadedModel->getBound().radius() * 2.0f;
}
for(unsigned int i=0; i<numThreads; ++i)
{
osg::Group* textGroup = new osg::Group;
mainGroup->addChild(textGroup);
// create the background thread
osg::OperationThread* operationThread = new osg::OperationThread;
operationThreads.push_back(operationThread);
// create the operation that will run in the background and
// sync once per frame with the main viewer loop.
updateOperation = new UpdateTextOperation(center, diameter, textGroup);
// add the operation to the operation thread and start it.
operationThread->add(updateOperation.get());
operationThread->startThread();
// add the operation to the viewer to sync once per frame.
viewer.addUpdateOperation(updateOperation.get());
// add a unit cube for the text to appear within.
osg::Geode* geode = new osg::Geode;
geode->getOrCreateStateSet()->setAttribute(new osg::PolygonMode(osg::PolygonMode::FRONT_AND_BACK,osg::PolygonMode::LINE));
geode->addDrawable(new osg::ShapeDrawable(new osg::Box(center,diameter)));
mainGroup->addChild(geode);
}
viewer.setSceneData(mainGroup);
}
else
{
// prepare scene.
osg::Vec3 center(0.0f,0.0f,0.0f);
float radius = 1.0f;
// make sure the root node is group so we can add extra nodes to it.
osg::Group* group = new osg::Group;
if (true)
{
// create the hud.
osg::Camera* camera = new osg::Camera;
camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
camera->setProjectionMatrixAsOrtho2D(0,1280,0,1024);
camera->setViewMatrix(osg::Matrix::identity());
camera->setClearMask(GL_DEPTH_BUFFER_BIT);
camera->addChild(createHUDText());
camera->getOrCreateStateSet()->setMode(GL_LIGHTING,osg::StateAttribute::OFF);
group->addChild(camera);
}
if (true)
{
group->addChild(create3DText(center,radius));
}
// set the scene to render
viewer.setSceneData(group);
}
std::string filename;
if (arguments.read("-o",filename))
{
osgDB::writeNodeFile(*viewer.getSceneData(),filename);
return 0;
}
viewer.addEventHandler( new osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()) );
viewer.addEventHandler(new osgViewer::StatsHandler());
viewer.run();
if (!operationThreads.empty())
{
for(Threads::iterator itr = operationThreads.begin();
itr != operationThreads.end();
++itr)
{
(*itr)->cancel();
}
}
return 0;
}