Сообщение Re[15]: Вопрос по корутинам от 28.08.2025 9:49
Изменено 28.08.2025 9:50 rg45
Re[15]: Вопрос по корутинам
Здравствуйте, kov_serg, Вы писали:
_>По поводу generateMachines. То там они не паралельно вызываются а по очереди.
Да, это я схалтурил малость. Исправляю:
http://coliru.stacked-crooked.com/a/7d4d319fbf7ff245
Жду равнозначного варианта на С. Со "вспомогательными макросами"
_>По поводу generateMachines. То там они не паралельно вызываются а по очереди.
Да, это я схалтурил малость. Исправляю:
http://coliru.stacked-crooked.com/a/7d4d319fbf7ff245
#include <generator>
#include <iostream>
#include <string>
#include <ranges>
#include <vector>
std::generator<std::string> runMachine(const int& param) {
co_yield "Idle";
co_yield "Started";
co_yield "Processing";
while (param < 10)
{
co_yield "Waiting";
}
co_yield "Stopped";
}
std::generator<std::generator<std::string>> createMachines(const int& param, size_t n) {
for (size_t i = 0; i < n; ++i)
co_yield runMachine(param);
}
int main() {
int param = 0;
std::vector machines(std::from_range, createMachines(param, 333));
for(bool active = true; active;) {
active = false;
for (size_t i = 0; i < machines.size(); ++i) {
if (machines[i].begin() != machines[i].end()) {
std::cout << "Machine " << i + 1 << ": " << *machines[i].begin() << std::endl;
active = true;
}
}
++param;
}
}
Output | |
| |
Жду равнозначного варианта на С. Со "вспомогательными макросами"

Re[15]: Вопрос по корутинам
Здравствуйте, kov_serg, Вы писали:
_>По поводу generateMachines. То там они не паралельно вызываются а по очереди.
Исправляю:
http://coliru.stacked-crooked.com/a/7d4d319fbf7ff245
Жду равнозначного варианта на С. Со "вспомогательными макросами"
_>По поводу generateMachines. То там они не паралельно вызываются а по очереди.
Исправляю:
http://coliru.stacked-crooked.com/a/7d4d319fbf7ff245
#include <generator>
#include <iostream>
#include <string>
#include <ranges>
#include <vector>
std::generator<std::string> runMachine(const int& param) {
co_yield "Idle";
co_yield "Started";
co_yield "Processing";
while (param < 10)
{
co_yield "Waiting";
}
co_yield "Stopped";
}
std::generator<std::generator<std::string>> createMachines(const int& param, size_t n) {
for (size_t i = 0; i < n; ++i)
co_yield runMachine(param);
}
int main() {
int param = 0;
std::vector machines(std::from_range, createMachines(param, 333));
for(bool active = true; active;) {
active = false;
for (size_t i = 0; i < machines.size(); ++i) {
if (machines[i].begin() != machines[i].end()) {
std::cout << "Machine " << i + 1 << ": " << *machines[i].begin() << std::endl;
active = true;
}
}
++param;
}
}
Output | |
| |
Жду равнозначного варианта на С. Со "вспомогательными макросами"
