Здравствуйте, Serginio1, Вы писали:
S>>>Не дожидаясь результата записи
S>·>Не надо так делать. Если тебе не важны результаты, то нафиг вообще его вызывать?
S> То есть например при записи логов мне не нужно знать записался он или нет.
S>Результат в записи лог мне не важен. Важно выполнение кода. Если в лог не записалось, то разбираться будем потом.
По идее это должна решать система логгирования. Если мы хотим не терять сообщения, то надо блокировать. Т.е. в самом коде должно быть
logger.info("message");
А потом уже можно настроить по ходу — блокируемся ли, или начинаем дропать сообщения, или при переполнении очереди — начать слать куда-нибудь в другое место. Притом в зависимости от logger level.
Но если тебе хочется запустить параллельно кусок кода, то ты просто запускаешь и... собственно всё:
Thread.ofVirtual().start(() -> File.WriteAllBytes("file1"));
И не нужно дублировать каждый метод. Загляни в доку File — и посмотри, что там методов в два раза больше, чем могло бы быть!
S>>>Обработка асинхронных задач по мере их выполнения (C#)
S>·>Код сложнее. Сам же несколько сообщений назад согласился.
S> Сложнее по сравнению с чем? Как ты с виртуальными потоками будешь делать WhenAny?
S>Мне нужна первая выполненная задача!
Я уже показывал код с anySuccessfulOrThrow — ровно три строчки. Заметь, код, который ответственнен за параллелизацию находится строго внутри StructuredTaskScope. Весь другой код, и выше и ниже — обычный синхронный. Не надо по всему стеку протаскивать async/await и CancellableToken.
S>>>·>Потому что не могут. Синхронный код в c# не масштабируется.
S>>> Еще раз несложно через Roslyn преобразовать код.
S>·>Сложно. Потребуются виртуальные потоки.
S> Ты не пользовался анализаторами и преобразователями кода. Сейчас с ИИ несложно набросать такой преобразователь.
S>Виртуальные потоки хороши, но только для старого кода.
S>Если мы пишем новый код с 12 года, то виртуальные потоки говно ибо не универсальны.
S>Кстати я могу Task создать через Task.Run или TaskCompletionSource. Как для виртуальных потоков создавать такие асинхронные методы
Никак. Зачем их создавать? Просто запускаешь поток, и всё.
S>Виртуальные потоки Java 21 — чувак, где мой lock?

Ты об этом уже писал, и я тебе уже про это отвечал. Хинт: Java 25.