diff options
author | arkady-e1ppa <arkady-e1ppa@yandex-team.com> | 2024-04-05 15:42:36 +0300 |
---|---|---|
committer | arkady-e1ppa <arkady-e1ppa@yandex-team.com> | 2024-04-05 15:51:06 +0300 |
commit | beb1725856691d2bd11a0e2ec8ce7b45cebb9804 (patch) | |
tree | 36347f8f8b8c3797fcab9747115ab53ed668b358 /contrib/libs/libjpeg-turbo/simd/arm | |
parent | 431eb68d0e52caf69928b4581df3555d18e706b3 (diff) | |
download | ydb-beb1725856691d2bd11a0e2ec8ce7b45cebb9804.tar.gz |
YT-21402: Fibers Refactoring pt.1: Introduce FunctionView to use it as AfterSwitch and improved registry algorithm
1) Added FunctionView -- non-owning type-erasure container. If we know that lambda lifetime is long enough, we can save up allocation by using this instead of TCallback.
2) Used FunctionView as AfterSwitch inside FiberSchedulerThread. We saved up a bunch of allocations (e.g. net worst-case allocations per suspend changed from 4 (x2 after switch + fiber allocation + enqueue to idle pool lf stack) to 2 (fiber allocation + enqueue to idle pool lf stack).
3) Fiber is not longer RefCounted. Its lifetime is managed via contract with TFiberRegistry.
4) TFiberRegistry is now lock-free for fiber insertion and deletion. For introspector it is still blocking.
5) "Introduced" SimpleIntrusiveList and IntrusiveMPSCStack to work be used in aforementioned TFiberRegistry.
6) elsedef branch of YT_REUSE_FIBERS was broken for about 3 years cause of double SetAfterSwitch. Now fixed.
7) (3), (4) and (5) caused some changes in yt_fiber_printers because some stuff was hardcoded there. Compat is in place.
d6cf2ae5801c87813a21ca3e7243e1b2baa09f35
Diffstat (limited to 'contrib/libs/libjpeg-turbo/simd/arm')
0 files changed, 0 insertions, 0 deletions