本文整理汇总了C++中TaskQueue::Unlock方法的典型用法代码示例。如果您正苦于以下问题:C++ TaskQueue::Unlock方法的具体用法?C++ TaskQueue::Unlock怎么用?C++ TaskQueue::Unlock使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TaskQueue
的用法示例。
在下文中一共展示了TaskQueue::Unlock方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main( int argc, char* argv[] )
{
// Our progress counter.
auto counter = pc::ProgressCounter::Create();
// Our tasks queue.
TaskQueue tasks;
// Produce the tasks.
std::mt19937 rnd_device( (uint32_t)time( 0 ) );
for( int32_t task_id = 0; task_id < 680; ++task_id )
{
auto goal = counter->ProduceGoal();
std::chrono::milliseconds interval{ 600 + rnd_device() % 1400 };
tasks.PushTask( { [goal, interval](){ std::this_thread::sleep_for( interval ); } } );
};
// Produce the workers.
tasks.Lock();
size_t threads_count = std::thread::hardware_concurrency();
while( threads_count-- > 0 )
{
std::thread t( ThreadFunction, std::ref( tasks ) );
t.detach();
};
tasks.Unlock();
// Display the progress of tasks completion until the progress reaches 100%
do
{
printf( "\rCurrent progress : %3.3f%%; Tasks remained : %zd;", 100.0f * counter->GetFinisedPercent(), tasks.GetCount() );
std::this_thread::sleep_for( std::chrono::milliseconds( 500 ) );
}
while( counter->GetRemainsPercent() > 0.0f );
};