Comments (2)
After thinking about it a little more, even with the change of single-await-unless-retained pattern, the main thread event queue can remain in tact. This way every continuation would happen on the main thread, even though promises are being used in background threads. That would then lead to the next feature of execution context switching, where the user can determine whether the continuation occurs on the main thread or background thread.
from protopromise.
Alternatively, instead of using Retain
and Release
on a single promise object, we could do exactly what UniTask does and add a Preserve
method that returns a new promise that can have any amount of callbacks added until Forget
is called on it. This is probably safer than having to remember to call Release
and Forget
and worrying about any sort of calling order for those. Then Retain
and Release
can be removed/deprecated.
[Edit] Although, with this method, it would become unsafe to return
a preserved promise (the caller could call Forget
prematurely). Hmm... But then again, it's not fool-proof to return
a retained promise, either, and this method is at least easier to get right I think.
from protopromise.
Related Issues (20)
- Prefix `bool`-returning methods with `Try`
- `TryWait` with an already canceled token does not release the lock. HOT 1
- IndexOutOfRangeException on iOS? HOT 14
- Add `AllSettled` and `MergeSettled`
- Better names of `ResultContainer` properties
- Use function pointers to clear object pool
- Use `UnsafeUtility` in Unity 2020
- NullReferenceException HOT 10
- Failed progress test HOT 3
- Race condition
- Cancelation race condition
- `AsyncReaderWriterLock` Contention Strategy HOT 5
- Use spin lock in async synchronization primitives
- Methods to troubleshoot UnobservedPromiseException HOT 24
- Fatal error when building macOS player HOT 3
- `PromiseYielder.WaitOneFrame().ToPromise()` waits an extra frame.
- Add analyzer to prevent accidental misuse of `AsyncEnumerable`
- Add `Promise.ParallelForEachAsync`
- Add async Linq extensions for `AsyncEnumerable` HOT 1
- Add `AsyncEnumerable.Merge`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from protopromise.