Ignore:
Timestamp:
Mar 20, 2019, 3:42:24 PM (5 years ago)
Author:
tdelisle <tdelisle@…>
Branches:
ADT, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
709e0e0
Parents:
13b1b1d
Message:

Clean existing coroutines using std::experimental::suspend_never and fixed Format coroutines to use RAII

Location:
doc/papers/concurrency/examples
Files:
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • doc/papers/concurrency/examples/Fib.cpp

    r13b1b1d r571bf75  
    1 #include "base.hpp"
    2 
    31#include <algorithm>
     2#include <iostream>
    43#include <iterator>
    54#include <vector>
     5
     6#include <experimental/coroutine>
    67
    78template<typename T>
     
    1415                }
    1516
    16                 auto initial_suspend() { return suspend_always(); }
    17                 auto final_suspend()   { return suspend_always(); }
     17                auto initial_suspend() { return std::experimental::suspend_always(); }
     18                auto final_suspend()   { return std::experimental::suspend_always(); }
    1819
    1920                void return_value(T value) {
     
    2324                auto yield_value(T value) {
    2425                        _value = value;
    25                         return suspend_always();
     26                        return std::experimental::suspend_always();
    2627                }
    2728
  • doc/papers/concurrency/examples/Format.cpp

    r13b1b1d r571bf75  
    1 
    2 #include "base.hpp"
     1#include <iostream>
     2#include <experimental/coroutine>
    33
    44struct fmt_cor {
    55        struct promise_type {
    66                char _value;
    7                 struct locals {
    8                         int g, b;
    9                 } * _l;
    107
    118                fmt_cor get_return_object() {
     
    1310                }
    1411
    15                 auto initial_suspend() { return suspend_never(); }
    16                 auto final_suspend()   { return suspend_always(); }
     12                auto initial_suspend() { return std::experimental::suspend_never(); }
     13                auto final_suspend()   { return std::experimental::suspend_always(); }
    1714
    1815                void return_void() {}
    1916                void unhandled_exception() {}
    20 
    21                 auto yield_value(locals & l) {
    22                         _l = &l;
    23                         return suspend_never();
    24                 }
    2517        };
    2618
     
    5042                if(_coroutine) {
    5143                        _coroutine.destroy();
    52                         if (_coroutine.promise()._l->g != 0 | _coroutine.promise()._l->b != 0) {
    53                                 std::cout << "\n";
    54                         }
     44
    5545                }
    5646        }
     
    7969
    8070fmt_cor Fmt() {
    81         fmt_cor::promise_type::locals l;
    82         co_yield l;
     71        struct locals {
     72                int g, b;
     73
     74                ~locals() {
     75                        if (g != 0 | b != 0) {
     76                                std::cout << "\n";
     77                        }
     78                }
     79        } l;
    8380        for(;;) {
    8481                for(l.g = 0; l.g < 5; l.g++) {
  • doc/papers/concurrency/examples/counter.cpp

    r13b1b1d r571bf75  
    1 #include "base.hpp"
     1#include <iostream>
     2#include <experimental/coroutine>
    23
    34struct counter_cor {
     
    78                }
    89
    9                 auto initial_suspend() { return suspend_never(); }
    10                 auto final_suspend()   { return suspend_never(); }
     10                auto initial_suspend() { return std::experimental::suspend_never(); }
     11                auto final_suspend()   { return std::experimental::suspend_never(); }
    1112
    1213                void return_void() {}
     
    4748        std::cout << "Counter: called\n";
    4849        for(unsigned i = 1;; i++) {
    49                 co_await suspend_always{};
     50                co_await std::experimental::suspend_always{};
    5051                std::cout << "Counter: Resumed " << i << " time(s)\n";
    5152        }
Note: See TracChangeset for help on using the changeset viewer.