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
Suppose I have many (thousands to millions of) objects per thread, all managed by the GC on the heap, and several dozen threads. These objects are concurrent actors. A thread can run a single actor at a time.
There is a theoretical problem where one thread may be starving some of its actors due to too many incoming messages, while another thread has no work to do, leading to poor multicore performance. In this situation, a possible technique is to evict actors from the busy thread to the idle thread.
What's the best way to move a GC object from one thread to another? I am prepared to accept that it isn't possible and that I will have to copy the object in chunks by sending messages between threads.
The text was updated successfully, but these errors were encountered:
I don't think there are functions to do it right now in Cello but in theory it should be possible to de-register a pointer with one thread's GC and then re-register the same pointer with a different thread's GC. You will need to also ensure there is some pointer to this object on the new thread's stack or in some part of that thread's GC heap.
Suppose I have many (thousands to millions of) objects per thread, all managed by the GC on the heap, and several dozen threads. These objects are concurrent actors. A thread can run a single actor at a time.
There is a theoretical problem where one thread may be starving some of its actors due to too many incoming messages, while another thread has no work to do, leading to poor multicore performance. In this situation, a possible technique is to evict actors from the busy thread to the idle thread.
What's the best way to move a GC object from one thread to another? I am prepared to accept that it isn't possible and that I will have to copy the object in chunks by sending messages between threads.
The text was updated successfully, but these errors were encountered: