Multi Thread
Multi-threading refers to dividing a single process into multiple pieces (threads) and executing them simultaneously. Most computer programs today use multi-threading to divide tasks and execute them concurrently, making them run faster and more efficiently.
For example, when using a web browser, even while downloading files or opening multiple web pages, users can continue with other tasks without waiting for previous tasks to complete. This is because the web browser program (process) is composed of multiple threads that can perform several tasks simultaneously.
In fact, if you open Windows Task Manager, you can see that a single program runs with multiple threads.

One CPU core can only execute one task at a time. For example, an Intel i5-12400 CPU has 6 cores, so it can execute a maximum of 6 tasks simultaneously.
So in this case, can only a maximum of 6 processes or threads be executed? No. We can play games while watching videos or browsing the web simultaneously, and in this case, dozens of processes or hundreds of threads are running concurrently.
While one CPU core can only execute one task at a time, operating systems like Windows or Linux allocate multiple processes or threads to the CPU alternately and execute them. Since this happens at very high speed, it appears as if they are running simultaneously.
Determining the allocation order and method for the CPU is called scheduling, and changing the task assigned to the CPU is called context switching.
Since Grablo’s software runs on a Linux operating system, Grablo’s logic runs as individual threads, enabling simultaneous execution.
However, since multi-threading doesn’t actually execute simultaneously but alternates at very high speed, execution time can vary depending on CPU performance or task content. This is also why the overall speed decreases when running heavy programs like Photoshop on low-spec PCs or when executing many programs simultaneously.
Therefore, Grablo’s logic execution cycle may sometimes be longer than the set cycle. For example, if logic is set to execute every 0.1 seconds (100 milliseconds), the actual execution cycle may exceed 100 milliseconds. The error becomes larger with lower hardware specifications or higher CPU usage, and smaller with higher hardware specifications or lower CPU usage. Error levels can vary depending on the execution environment, but under general usage conditions, it’s 0~3 milliseconds, which is acceptable for most use cases.
If the implementation requires very precise timing within 1 millisecond, Grablo is not suitable, and a real-time operating system should be used.