Search
Write a publication
Pull to refresh
0
0
Дмитрий @EkvVN

Пользователь

Send message
А как быстро в компиляторах успевают реализовывать все эти нововведения, которые появляются в новых стандартах C++?
Эту задачу можно попробовать решить с помощью реактивного программирования, асинхронно обрабатывая поступающие данные (метод on_next).
А также обрабатывая случаи завершения (on_completed) и возникновения ошибки (on_error)
в входной последовательности.
Для C++ есть библиотека rxcpp.

Псевдокод:
auto srcValuesThread = rxcpp::observe_on_new_thread();
auto uiThread = rxcpp::observe_on_new_thread();

auto period = std::chrono::milliseconds(1);
auto values = rxcpp::observable<>::interval(period);
values		
// отфильтровать только четные значения
.filter([](int i){ return i % 2 == 0}) 
// обработать только 3 значения		
.take(3) 						
// преобразование какждое значение	
.map([](int i){ return i * 100});	
// продолжить обработку на потоке uiThread
.observeOn(uiThread) 				
// выполнить подписку и запустить генерацию значений на потоке srcValuesThread
.subscribe_on(srcValuesThread)		
.subscribe(
    // on_next
    [this](int v){ this->labelWidget.setText("OnNext:");}
    // on_error
    [this](std::eception_ptr eptr){ this->labelWidget.setText("OnError"); },
    // on_completed
    [this](){ this->labelWidget.setText("OnCompleted");});

Information

Rating
Does not participate
Location
Россия
Registered
Activity