Giriş
Coroutine2 kütüphanesi Coroutine1'e tercih edilmeli
Version 1
Constructor
Şöyle yaparız.
Şu satırı dahil ederiz.
Şöyle yaparız. Sink ve pull_type long,long long double ve string nesneleri alabilir.
Şöyle yaparız.
Sink'i dolduran metod lambda olabilir. Şöyle yaparız.
Şöyle yaparız.
Coroutine2 kütüphanesi Coroutine1'e tercih edilmeli
Version 1
Constructor
Şöyle yaparız.
// example.cpp
#include <boost/coroutine/all.hpp>
#include <iostream>
using namespace boost::coroutines;
void mycorofunc(coroutine<void>::push_type &sink){
std::cout << "1";
sink();
std::cout << " 3";
}
int main() {
coroutine<void>::pull_type source{mycorofunc};
std::cout << " 2";
source();
std::cout << " 4!" << std::endl;
}
Version 2Şu satırı dahil ederiz.
#include <boost/coroutine2/all.hpp>
TanımlamaŞöyle yaparız. Sink ve pull_type long,long long double ve string nesneleri alabilir.
using V = boost::variant<long, long long, double, std::string>;
using Coro = boost::coroutines2::coroutine<V>;
Constructor - Sink'i dolduran metodu verŞöyle yaparız.
class worker {
public:
void import_data(Coro::push_type &sink) {
sink(stol(fieldbuffer));
sink(stod(fieldbuffer));
sink(fieldbuffer); // Fieldbuffer is a std::string
}
std::string fieldbuffer = "+042.42";
};
Coro::pull_type _fieldloader(boost::bind(&worker::import_data, &w, _1));
Constructor - lambda Sink'i dolduran metod lambda olabilir. Şöyle yaparız.
using coro_t = boost::coroutines2::coroutine<bool>;
coro_t::pull_type source([](coro_t::push_type& sink) {
...
});
get metoduŞöyle yaparız.
while (_fieldloader) {
std::cout << _fieldloader.get() << "\n";
_fieldloader();
}
Hiç yorum yok:
Yorum Gönder