Modern computers have multiple processing cores.
Assuming there is enough processing so that each core can remain continuously busy.
they will be assigned a queue of computational work items.
Or threads to complete by the scheduler.
During executing these threads, its possible to spawn new threads or work items.
These are separate threads that can be processed simultaneously.
They may need to feed results back to the spawning programs or remain completely separate indefinitely.
Typically, these child threads are assigned to the same processing core as the parent.
All this assumes that all the cores are kept busy.
Eventually, a processing core will likely complete all the assigned tasks.
This prevents a potentially large fraction of the overall processor from sitting idle, which is helpful.
Work stealing can come with some costs, though.
For example, the new processing core will likely have to load any relevant data into its cache memory.
Some cached values may be identical between parent and child threads.
Implementations
Several programming languages have runtimes that can schedule work directly on dedicated processors.
Alternatively, the operating system may be in charge of scheduling actual processor time.
There are various approaches to how work items are selected to be stolen.
In the original concept, the approach was to choose another random core.
If it had one or more work items in its queue, take the last one.
Depending on the preference for whether a child process is immediately executed by the originating processor.
That way, all processors are doing something to help.
Conclusion
Work stealing is a process that happens automatically in multicore CPUs.
Each core has a queue of tasks to perform.
When a processor completes its tasks, it then steals another task from the queue of another processing core.