Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
блокирует вызвавшую его рабочую нить
std::condition_variable cond_;
void push(...) {
std::lock_guard<mutex> lock(mut);
// push
cond_.notify_one();
}
void pop(Acceptor && acceptor, function<bool()> func) {
std::unique_lock<mutex> lock(mut);
while (true) {
if (cond.wait_for(lock, milliseconds(50), [](){return !queue_.empty()})) {
break;
} else {
if (func()) { return; }
}
}
// pop elements
}
// Вызов функции
pop(accessor, [](){
int numfds;
curl_multi_wait(..., 0, &numfds);
return numfds != 0;
}
Асинхронные HTTP-запросы на C++: входящие через RESTinio, исходящие через libcurl. Часть 2