Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Спавны, перформанс, чтооо??? #9087

Merged
merged 3 commits into from
Apr 15, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/wiki/CODE_CONVENTION.md
Expand Up @@ -292,7 +292,7 @@ for(var/atom in bag_of_atoms)
- spawn(10), сюрприз-сюрприз вовсе не одна секунда.
- Вторая проблема - ссылки в ассинхронном вызове. Если вы ссылаетесь на объект, который под спавном, и что-то в этом время удалит этот объект(Попытается), то внутри спавна останется ссылка на него.
- Третья проблема - отсутствие возможности профилизировать вызванный под спавном код. В профайлере он будет подписываться как "ASYNC FUNCTION CALL", или что-то подобное, что вообще ничего не говорит о том что это за функция такая.
- Четвёртая проблема - нагрузка на процессор. Спавн очень специфично "асинхронизируется". Он не только вызывает асинхронный вызов, но и решает подсчитать когда он должен закончиться.
LudwigVonChesterfield marked this conversation as resolved.
Show resolved Hide resolved
- Четвёртая проблема - отсутствие контроля над выполнением. В случае с, к примеру, таймером, которые вынесены в отдельную подсистему - можно выбирать приоритет выполнения таймера, в то время как spawn() является низкоуровневым byond-проком, не контролируется нами, и может работать не всегда оптимальным для нас способом.

В зависимости от того, как используется спавн есть два пути замены:
- Если **spawn(time)**:
Expand Down