本文整理汇总了C++中WorkerPool::schedule方法的典型用法代码示例。如果您正苦于以下问题:C++ WorkerPool::schedule方法的具体用法?C++ WorkerPool::schedule怎么用?C++ WorkerPool::schedule使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorkerPool
的用法示例。
在下文中一共展示了WorkerPool::schedule方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main()
{
WorkerPool workers;
for (int i = 0; i != 100; ++i)
{
workers.schedule([=]{ usleep(10); }, 0);
}
for (int i = 0; i != 50; ++i)
{
workers.schedule([=]{ usleep(10); }, 1);
}
for (int i = 0; i != 40; ++i)
{
workers.schedule([=]{ usleep(10); }, 2);
}
for (int i = 0; i != 10; ++i)
{
workers.schedule([=]{ usleep(10); }, 3);
}
sleep(1);
quit = true;
}
示例2: sslserver
MORDOR_UNITTEST(SSLStream, forceDuplex)
{
WorkerPool pool;
std::pair<Stream::ptr, Stream::ptr> pipes = pipeStream();
SSLStream::ptr sslserver(new SSLStream(pipes.first, false));
SSLStream::ptr sslclient(new SSLStream(pipes.second, true));
Stream::ptr server = sslserver, client = sslclient;
int sequence = 0;
pool.schedule(boost::bind(&accept, sslserver));
sslclient->connect();
pool.dispatch();
pool.schedule(boost::bind(&readWorld, client,
boost::ref(sequence)));
pool.dispatch();
MORDOR_TEST_ASSERT_EQUAL(++sequence, 2);
// Read is pending
client->write("hello");
client->flush(false);
pool.dispatch();
server->write("world");
server->flush(false);
pool.dispatch();
MORDOR_TEST_ASSERT_EQUAL(++sequence, 4);
}
示例3: doNothingFiber
// Similar to above, but after the scheduler has stopped, yielding
// to it again should implicitly restart it
MORDOR_UNITTEST(Scheduler, hijackMultipleDispatch)
{
Fiber::ptr doNothingFiber(new Fiber(&doNothing));
WorkerPool pool;
MORDOR_TEST_ASSERT_EQUAL(Scheduler::getThis(), &pool);
pool.schedule(doNothingFiber);
MORDOR_TEST_ASSERT_EQUAL(doNothingFiber->state(), Fiber::INIT);
pool.dispatch();
MORDOR_TEST_ASSERT_EQUAL(doNothingFiber->state(), Fiber::TERM);
doNothingFiber->reset();
pool.schedule(doNothingFiber);
MORDOR_TEST_ASSERT_EQUAL(doNothingFiber->state(), Fiber::INIT);
pool.dispatch();
MORDOR_TEST_ASSERT_EQUAL(doNothingFiber->state(), Fiber::TERM);
}
示例4: pipeStream
MORDOR_UNITTEST(PipeStream, closeOnBlockingReader)
{
std::pair<Stream::ptr, Stream::ptr> pipe = pipeStream();
WorkerPool pool;
int sequence = 1;
pool.schedule(Fiber::ptr(new Fiber(boost::bind(&closeOnBlockingReader,
pipe.first, boost::ref(sequence)))));
Buffer output;
MORDOR_TEST_ASSERT_EQUAL(pipe.second->read(output, 10), 0u);
MORDOR_TEST_ASSERT_EQUAL(++sequence, 4);
}
示例5:
// When hijacking the calling thread, you can stop() from anywhere within
// it
MORDOR_UNITTEST(Scheduler, stopScheduledHijack)
{
WorkerPool pool;
pool.schedule(boost::bind(&Scheduler::stop, &pool));
pool.dispatch();
}