_lock<std::shared_timed_mutex> Lock(MainLock);     for (auto It = BlockBegin; It != BlockEnd; ++It) {       auto &BF = It->second;       if (SkipPredicate && SkipPredicate(BF))         continue;        WorkFunction(BF