reckfellENGINE

ReckfellThread

Запуск worker, результат и обязательный join.

На этой странице
class ReckfellThreadReckfellSharpНаследует RefCounted

ReckfellThread выполняет Callable отдельно от главного потока. IsAlive показывает работу callback, а IsStarted остаётся true до WaitToFinish, даже после возврата результата. Удерживайте поток до join; Dispose не заменяет завершение.

Схема остановки: согласованно запросить выход → разбудить ожидающего worker → дать ему выйти → WaitToFinish() → освободить объекты синхронизации. Не делайте join, удерживая нужный worker mutex.

Поток не делает активную иерархию Entity и общие Resource безопасными. Отключение проверок не исправляет доступ. Работа с потоками. Проверены Windows headless lifecycle и синхронизация; приоритеты, стресс, отключение проверок и перенос исключений не подтверждены.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

ReckfellThreadКонструктор
# ReckfellThread
C#
public ReckfellThread();

Создаёт незапущенный поток движка. Это не System.Threading.Thread и не Task. Удерживайте объект и цель Callable до завершения; после успешного Start обязательно выполните WaitToFinish до Dispose/повторного запуска. Уничтожение wrapper не является отменой задачи.

Методы7

GetIdstring
# GetId
C#
public string GetId();

Возвращает строку ID, назначенного движком этому запуску. До Start и после WaitToFinish — "0". После завершения callback до join ID остаётся назначенным. Не равен гарантированно OS thread ID или ManagedThreadId; не используйте как постоянный ключ между запусками.

Возвращает string

Строка engine ID или "0" вне запущенного несобранного lifecycle.

IsAlivebool
# IsAlive
C#
public bool IsAlive();

Показывает, что callback ещё выполняется, включая блокировку на Semaphore/Mutex. False не означает, что поток уже собран: после выполнения всё ещё нужен WaitToFinish. Это не проверка успешности результата и не отмена.

Возвращает bool

True, пока callback ещё выполняется/ожидает.

IsMainThreadbool
# IsMainThread
C#
public static bool IsMainThread();

Проверяет вызывающий поток, а не состояние конкретного экземпляра. True на главном потоке движка, false в проверенном worker. Не делает доступ к любому Resource/Entity автоматически безопасным.

Возвращает bool

True для главного потока текущего вызова.

IsStartedbool
# IsStarted
C#
public bool IsStarted();

True после успешного Start до WaitToFinish, даже если callback уже вернул результат. Не синоним IsAlive. До join повторный Start отклоняется; завершённый, но несобранный поток всё ещё требует cleanup.

Возвращает bool

True после Start до join, включая уже завершённый callback.

SetThreadSafetyChecksEnabledvoid
# SetThreadSafetyChecksEnabled
C#
public static void SetThreadSafetyChecksEnabled(bool enabled);

Меняет проверки доступа для текущего worker-потока; вызов на главном потоке запрещён. enabled=false не добавляет блокировки и не делает активное дерево/ресурсы потокобезопасными. Не используйте для сокрытия race condition. В QA из worker проверен только true; отключение и ошибочный main-thread вызов не исполнялись.

Параметры
ИмяТипПо умолчанию
enabledbool—
enabled

True включает проверки текущего worker; false их подавляет, но не синхронизирует доступ.

StartError
# Start
C#
public Error Start(Callable callable, ReckfellThread.Priority priority = ReckfellThread.Priority.Normal);

Запускает Callable без передаваемых аргументов; результат затем читается через WaitToFinish. Error.Ok означает принятие запуска, не успешное окончание работы. Поток нельзя запустить повторно до join; недействительный Callable/priority дают InvalidParameter. Цель Callable должна оставаться живой. Приоритет — запрос планировщику, не гарантия времени выполнения. Контракт переноса исключений/отмены как у Task отсутствует; для остановки реализуйте свой согласованный флаг и пробуждение ожидающего worker.

Параметры
ИмяТипПо умолчанию
callableCallable—
priorityReckfellThread.PriorityReckfellThread.Priority.Normal
callable

Живой Callable без обязательных аргументов; не вызывайте delegate заранее вместо передачи.

priority

Low, Normal или High; запрос планирования, не гарантия ускорения/порядка.

Возвращает Error

Error принятия запуска; Ok не означает завершённый результат.

WaitToFinishVariant
# WaitToFinish
C#
public Variant WaitToFinish();

Блокирует вызывающий поток до завершения callback, возвращает его Variant и собирает native-поток. После этого IsStarted=false и разрешён новый Start. Не вызывайте из самого worker, до Start или удерживая mutex, нужный worker: это ошибка/взаимная блокировка. Сначала обеспечьте выход worker из ожидания. False от IsAlive не отменяет необходимость join. Сам callback может зависеть от главного потока — не блокируйте его без проверки этой зависимости.

Возвращает Variant

Собственный Variant результата callback; Nil допустим как результат и возможен при ошибочном вызове.

ReckfellThread.Priority

ЗначениеОписание
High = 2

Поток, работающий с более высоким приоритетом, чем обычно.

Low = 0

Поток, работающий с более низким приоритетом, чем обычно.

Normal = 1

Поток со стандартным приоритетом.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.