Threading
Threads allow concurrent execution of multiple bits of code. They're popular in desktop operating systems like Windows and in languages like Java. Threads have limited support in the Particle platform, but exist.
Though the semantics are a bit different, you might use threads in the same way you would use separate processes in Unix as well.
Threading in Device OS is stable, and threads are used by Device OS internally and can be used judiciously.
Because Particle Devices have limited RAM and no virtual memory it's impractical to use a large number of threads. You should not expect to start dozens of threads as you might in a Java application, for example.
As with threaded programs on all platforms, you have to be careful with thread safety across API calls, preventing simultaneous access to resources by using a lock, and preventing deadlock.
We recommend always enabling the system thread in your application firmware using SYSTEM_THREAD(ENABLED);
. The threading features below are available whether you enable the system thead or not.
See also the threading explainer for additional information.
With Device OS 6.2.0 and later, system thread is always enabled. For additional information, see non-threaded system mode.