Информация об изменениях

Сообщение Re[23]: Mногопоточность: C++ vs Erlang vs другие от 11.06.2015 21:04

Изменено 11.06.2015 21:07 Evgeny.Panasyuk

Здравствуйте, vdimas, Вы писали:

V>Ну вот, ЧТД:

V>
EP>>struct coroutine : asio::coroutine
EP>>{
V>

V>Чтобы уметь копировать состояние, тебе это состояние надо в явном виде, в виде структуры/объекта. Я именно про это и написал, что тебе надо, чтобы для тебя "торчали уши" низлежащего механизма.

Никакое не ЧТД
Что мешает вот это:
future<void> coroutine()
{
    int x = await foo;
    char x = await bar;
    cout << x << " " << y << endl;
}
Преобразовать вот в это:
struct coroutine : asio::coroutine
{
    int x;
    char y;

    void operator()()
    {
        reenter(*this)
        {
            await(x, foo); // x = await foo;
            await(y, bar); // y = await bar;
            cout << x << " " << y << endl;
        }
    };
};
?
Более того, в C# именно подобное преобразование и происходит.

V>Так вот, если уши торчат, как в твоём примере, то нафига это тянуть в стандарт?


Я не предлагаю в стандарт тянуть эмуляцию на макросах. Ещё раз, я показываю как оно может быть устроенно внутри.
Re[23]: Mногопоточность: C++ vs Erlang vs другие
Здравствуйте, vdimas, Вы писали:

V>Ну вот, ЧТД:

V>
EP>>struct coroutine : asio::coroutine
EP>>{
V>

V>Чтобы уметь копировать состояние, тебе это состояние надо в явном виде, в виде структуры/объекта. Я именно про это и написал, что тебе надо, чтобы для тебя "торчали уши" низлежащего механизма.

Никакое не ЧТД
Что мешает вот это:
future<void> coroutine()
{
    int x = await foo;
    char y = await bar;
    cout << x << " " << y << endl;
}
Преобразовать вот в это:
struct coroutine : asio::coroutine
{
    int x;
    char y;

    void operator()()
    {
        reenter(*this)
        {
            await(x, foo); // x = await foo;
            await(y, bar); // y = await bar;
            cout << x << " " << y << endl;
        }
    };
};
?
Более того, в C# именно подобное преобразование и происходит.

V>Так вот, если уши торчат, как в твоём примере, то нафига это тянуть в стандарт?


Я не предлагаю в стандарт тянуть эмуляцию на макросах. Ещё раз, я показываю как оно может быть устроенно внутри.