Multi-threading
This page is a work in progress. Put everything related to multi-threading here, threads, synchronization, multi-core support, etc.
The Nintendo 3DS offers support for threading through use of SVC calls.
Threads
For Kernel implementation details, see KThread.
Though it is possible to run multi-threaded programs, running those on different cores is not possible "as-is". One core is always dedicated to the OS, hence you will never get 100% of both cores.
Usage
CreateThread
ExitThread
SleepThread
GetThreadPriority
SetThreadPriority
OpenThread
GetProcessIdOfThread
GetThreadId
GetThreadInfo
GetThreadContext
Core affinity
GetThreadAffinityMask
SetThreadAffinityMask
GetThreadIdealProcessor
SetThreadIdealProcessor
Debug
GetThreadList
GetDebugThreadContext
SetDebugThreadContext
GetDebugThreadParam
Synchronization
Most synchronization systems seem to have both a "normal" and "light-weight" version
Mutex (normal)
CreateMutex
/!\ It seems that the mutex will not be available once the thread that created it is destroyed
ReleaseMutex
Ciritical Section (light-weight mutex)
CriticalSection::Initialize
Same thread ownership as a mutex ?
CriticalSection::Enter
CriticalSection::Leave
Semaphore
Light Semaphore ?
Does it exist ?