 In DragonFly , each CPU has its own thread scheduler . Upon creation , threads are assigned to processors and are never preemptively switched from one processor to another ; they are only migrated by the passing of an inter @-@ processor interrupt ( IPI ) message between the CPUs involved . Inter @-@ processor thread scheduling is also accomplished by sending asynchronous IPI messages . One advantage to this clean compartmentalization of the threading subsystem is that the processors ' on @-@ board caches in Symmetric <unk> Systems do not contain duplicated data , allowing for higher performance by giving each processor in the system the ability to use its own cache to store different things to work on . 
