<a name="l1"></a><span class=cF0>TempleOS does master-slave multicore instead of SMP. </span><span class=cF2>Core0</span><span class=cF0> is the master. The
<a name="l2"></a>master core's applications explicitly assign computational jobs to other cores
<a name="l3"></a>and the TempleOS scheduler does not move tasks between cores.
<a name="l4"></a>
<a name="l5"></a>There are multicore safe locks for file access and heap allocations, however, so
<a name="l6"></a>TempleOS is symmetrical in some sense. See </span><a href="/Wb/Demo/MultiCore/LoadTest.HC.HTML#l1"><span class=cF4>::/Demo/MultiCore/LoadTest.HC</span></a><span class=cF0>.
<a name="l10"></a>Each core has an executive </span><a href="/Wb/Doc/Glossary.DD.HTML#l181"><span class=cF4>Seth Task</span></a><span class=cF0> which is the father of all tasks on that
<a name="l11"></a>core. </span><a href="/Wb/Doc/Glossary.DD.HTML#l171"><span class=cF4>Adam</span></a><span class=cF0> is the </span><a href="/Wb/Doc/Glossary.DD.HTML#l181"><span class=cF4>Seth Task</span></a><span class=cF0> on </span><span class=cF2>Core0</span><span class=cF0>.
<a name="l13"></a>You give a job to a </span><a href="/Wb/Doc/Glossary.DD.HTML#l181"><span class=cF4>Seth Task</span></a><span class=cF0> with </span><a href="/Wb/Kernel/MultiProc.HC.HTML#l213"><span class=cF4>JobQue</span></a><span class=cF0>() and get the result with </span><a href="/Wb/Kernel/Job.HC.HTML#l199"><span class=cF4>JobResGet</span></a><span class=cF0>().
<a name="l14"></a> You spawn a task on any core with </span><a href="/Wb/Kernel/KTask.HC.HTML#l242"><span class=cF4>Spawn</span></a><span class=cF0>().
<a name="l18"></a>The compiler has a </span><span class=cF2>lock{}</span><span class=cF0> feature but it doesn't work well. See </span><span class=cF4>