You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
我发现,为了提高协程的性能,可以使用 一种叫栈试式内存分配器
比如 A 调用 B。肯定是 A 先分配。
B 后分配。
释放的时候,肯定也是 B 先释放。
然后 A 才被释放。
对吧?
既然如此,在自定义协程帧的分配器的时候,使用栈式分配策略。先一次性向 os 申请一片连续的内存。然后,每单创建一个新协程promise,就移动一下指针完成分配。释放的时候,也是简单的回退指针完成释放。
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
我发现,为了提高协程的性能,可以使用 一种叫栈试式内存分配器
比如 A 调用 B。肯定是 A 先分配。
B 后分配。
释放的时候,肯定也是 B 先释放。
然后 A 才被释放。
对吧?
既然如此,在自定义协程帧的分配器的时候,使用栈式分配策略。先一次性向 os 申请一片连续的内存。然后,每单创建一个新协程promise,就移动一下指针完成分配。释放的时候,也是简单的回退指针完成释放。
只有处在同一条调用链上的一系列协程函数,才共享同一个分配器。
也就是说,这个分配器最好是使用“协程本地存储”的方式存起来。然后每个协程函数,都通过获取协程本地存储的方式,获得这个分配器。再用这个分配器去分配新的 await promise 对象。
Beta Was this translation helpful? Give feedback.
All reactions