# Sticky Task Virality

**URL:** <https://discourse.julialang.org/t/sticky-task-virality/134009>\
**Category:** Internals & Design\
**Created:** [November 20, 2025, 2:36pm UTC](https://discourse.julialang.org/t/sticky-task-virality/134009 "2025-11-20T14:36:14Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![csvance](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/csvance/32/218927_2.png) [@csvance](https://discourse.julialang.org/u/csvance)\
**Post date:** [November 20, 2025, 2:36pm UTC](https://discourse.julialang.org/t/sticky-task-virality/134009/1 "2025-11-20T14:36:14Z")

</div>

I just watched the JuliaCon scheduler talk [https://youtu.be/FC4HyJXyvP0?si=LcMYJLlIKAqnvqQG&t=341](https://youtu.be/FC4HyJXyvP0?si=LcMYJLlIKAqnvqQG&t=341) and it was mentioned that the sticky bit can spread to other tasks when using locks.

With Julia 1.12 I tried to have a non sticky task acquire a ReentrantLock held by a sticky task and the other way around as well. In neither instance did the non sticky task suddenly become sticky. This is also something I test for in gRPCClient.jl and have not seen it either.

I’m trying to understand this because for high performance network IO applications `@async` has ideal performance characteristics. Is there a comprehensive list of conditions for a task to become sticky somewhere? I know that if a parent task uses `@async`, it becomes sticky also. But outside of that what do I need to watch out for? Is there any special behavior inside of C callbacks or interactions with threads created outside of Julia?
