Сообщение Re[14]: Вопрос по корутинам от 28.08.2025 8:33
Изменено 28.08.2025 8:34 kov_serg
Re[14]: Вопрос по корутинам
Здравствуйте, rg45, Вы писали:
R>Именно эту мысль я и пытаюсь донести до широкой общественности. Уже несколько раз говорил об этом в этой теме.
_>>Корутины это просто сопособ записи. Без них можно спокойно писать точно такой же код. При этом достаточно обычного голого C.
R>Ну, напиши точно такой же код
Вот тожей же ... код на голом C
По поводу generateMachines. То там они не паралельно вызываются а по очереди.
R>Именно эту мысль я и пытаюсь донести до широкой общественности. Уже несколько раз говорил об этом в этой теме.
_>>Корутины это просто сопособ записи. Без них можно спокойно писать точно такой же код. При этом достаточно обычного голого C.
R>Ну, напиши точно такой же код
Автор: rg45
Дата: 28.08 10:43
без корутин. А то я уже дважды реализовывал твои хотелки, а ты мои ни разу. У меня уже начинают шевелиться сомнения в простоте реализации того же самомго на голом С.Дата: 28.08 10:43
std::generator<std::pair<int, std::string>> runMachine(const int& param, int machineID) {
co_yield std::pair{machineID, "Idle"};
co_yield std::pair{machineID, "Started"};
co_yield std::pair{machineID, "Processing"};
while (param < 10)
{
co_yield std::pair{machineID, "Waiting"};
}
co_yield std::pair{machineID, "Stopped"};
}
Вот тожей же ... код на голом C
typedef struct {
int loop;
int machineID, *param;
const char* value;
} fn1_t;
void fn1_setup(fn1_t *self) { self->loop=0; }
int fn1_loop(fn1_t *self) {
LOOP_BEGIN(self->loop)
self->value="Idle"; LOOP_POINT
self->value="Started"; LOOP_POINT
self->value="Processing"; LOOP_POINT
while (*self->param < 10) {
self->value="Waiting"; LOOP_POINT
}
self->value="Stopped";
LOOP_END
}
вспомогательные макросы | |
| |
По поводу generateMachines. То там они не паралельно вызываются а по очереди.
Предполагалось что-то вида | |
| |
Re[14]: Вопрос по корутинам
Здравствуйте, rg45, Вы писали:
R>Именно эту мысль я и пытаюсь донести до широкой общественности. Уже несколько раз говорил об этом в этой теме.
_>>Корутины это просто сопособ записи. Без них можно спокойно писать точно такой же код. При этом достаточно обычного голого C.
R>Ну, напиши точно такой же код
Вот такой же код на голом C
По поводу generateMachines. То там они не паралельно вызываются а по очереди.
R>Именно эту мысль я и пытаюсь донести до широкой общественности. Уже несколько раз говорил об этом в этой теме.
_>>Корутины это просто сопособ записи. Без них можно спокойно писать точно такой же код. При этом достаточно обычного голого C.
R>Ну, напиши точно такой же код
Автор: rg45
Дата: 28.08 10:43
без корутин. А то я уже дважды реализовывал твои хотелки, а ты мои ни разу. У меня уже начинают шевелиться сомнения в простоте реализации того же самомго на голом С.Дата: 28.08 10:43
std::generator<std::pair<int, std::string>> runMachine(const int& param, int machineID) {
co_yield std::pair{machineID, "Idle"};
co_yield std::pair{machineID, "Started"};
co_yield std::pair{machineID, "Processing"};
while (param < 10)
{
co_yield std::pair{machineID, "Waiting"};
}
co_yield std::pair{machineID, "Stopped"};
}
Вот такой же код на голом C
typedef struct {
int loop;
int machineID, *param;
const char* value;
} fn1_t;
void fn1_setup(fn1_t *self) { self->loop=0; }
int fn1_loop(fn1_t *self) {
LOOP_BEGIN(self->loop)
self->value="Idle"; LOOP_POINT
self->value="Started"; LOOP_POINT
self->value="Processing"; LOOP_POINT
while (*self->param < 10) {
self->value="Waiting"; LOOP_POINT
}
self->value="Stopped";
LOOP_END
}
вспомогательные макросы | |
| |
По поводу generateMachines. То там они не паралельно вызываются а по очереди.
Предполагалось что-то вида | |
| |