std/coro
Source EditРеализация сопроцедур Nim, поддерживает несколько методов переключения контекста:
| ucontext | доступно в unix и подобных системах (по умолчанию) |
| setjmp | доступно в unix и подобных системах (только x86/64) |
| fibers | доступно и необходимо в Windows. |
-d:nimCoroutinesТребуется для сборки этого модуля.
-d:nimCoroutinesUcontextИспользовать бэкэнд ucontext.
-d:nimCoroutinesSetjmpИспользовать бэкэнд setjmp.
-d:nimCoroutinesSetjmpBundledИспользовать встроенную реализацию setjmp.
Нестабильный API.
Поддержка таймеров для реального времени GC. Основано на https://github.com/jckarter/clay/blob/master/compiler/hirestimer.cppИмпорты
- coro_detection, os, списки, winlean
Типы
CoroutineRef = ref object
- CoroutineRef содержит указатель на фактический объект сопроцедуры. Открытый API всегда возвращает CoroutineRef вместо CoroutinePtr для возможности удерживать ссылку на объект сопроцедуры, пока он может быть безопасно удален циклом планировщика сопроцедур. В этом случае Coroutine.reference.coro устанавливается в nil. Открытый API проверяет его на nil и корректно завершает работу, если он nil. Source Edit
Процедуры
© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/coro.html