This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
ffnamespace:tutorial [2015/09/08 14:58] torquati |
ffnamespace:tutorial [2015/09/08 16:52] (current) torquati |
||
---|---|---|---|
Line 4: | Line 4: | ||
===== Tutorial ===== | ===== Tutorial ===== | ||
- | * [[http://calvados.di.unipi.it/storage/tutorial/html/tutorial.html|Single HTML file]] (version August 2014) | + | * [[http://calvados.di.unipi.it/storage/tutorial/html/tutorial.html|Single HTML file]] (version September 2015) |
- | * [[http://calvados.di.unipi.it/storage/tutorial/fftutorial.pdf|PDF file]] (version September 2014) | + | * [[http://calvados.di.unipi.it/storage/tutorial/fftutorial.pdf|PDF file]] (version September 2015) |
- | * [[http://calvados.di.unipi.it/storage/tutorial/fftutorial_source_code.tgz | Tests and examples - source code tarball]] (version September 2014) | + | * [[http://calvados.di.unipi.it/storage/tutorial/fftutorial_source_code.tgz | Tests and examples - source code tarball]] (version September 2015) |
===== Very short Tutorial ===== | ===== Very short Tutorial ===== | ||
Line 27: | Line 27: | ||
<code c++> | <code c++> | ||
/* this is a 3-stage pipeline example */ | /* this is a 3-stage pipeline example */ | ||
+ | #include <iostream> | ||
#include <ff/pipeline.hpp> | #include <ff/pipeline.hpp> | ||
using namespace ff; | using namespace ff; | ||
typedef long fftask_t; | typedef long fftask_t; | ||
- | struct firstStage: ff_node_t<task_t> { | + | struct firstStage: ff_node_t<fftask_t> { |
fftask_t *svc(fftask_t *t) { | fftask_t *svc(fftask_t *t) { | ||
for(long i=0;i<10;++i) ff_send_out(new fftask_t(i)); | for(long i=0;i<10;++i) ff_send_out(new fftask_t(i)); | ||
Line 41: | Line 42: | ||
return t; | return t; | ||
} | } | ||
- | struct thirdStage: ff_node_t<task_t> { | + | struct thirdStage: ff_node_t<fftask_t> { |
fftask_t *svc(fftask_t *t) { | fftask_t *svc(fftask_t *t) { | ||
std::cout << "stage" << get_my_id() << " received " << *t << "\n"; | std::cout << "stage" << get_my_id() << " received " << *t << "\n"; | ||
Line 72: | Line 73: | ||
int main() { | int main() { | ||
- | std::vector<std::unique_ptr<ff_node> > W = { // the farm has 2 workers | + | std::vector<std::unique_ptr<ff_node> > W; |
- | make_unique<thirdStage>(), | + | // the farm has 2 workers |
- | make_unique<thirdStage>() | + | W.push_back( make_unique<thirdStage>()); |
- | }; | + | W.push_back( make_unique<thirdStage>()); |
+ | | ||
ff_Pipe<> pipe(make_unique<firstStage>(), | ff_Pipe<> pipe(make_unique<firstStage>(), | ||
make_unique<ff_node_F<fftask_t> >(secondStage), | make_unique<ff_node_F<fftask_t> >(secondStage), | ||
- | make_unique<ff_Farm<fftask_f> >(std::move(W)) | + | make_unique<ff_Farm<fftask_t> >(std::move(W)) |
); | ); | ||
if (pipe.run_and_wait_end()<0) error("running pipe"); | if (pipe.run_and_wait_end()<0) error("running pipe"); |