# Concurrency of Software Timers with loop()

**URL:** <https://community.particle.io/t/concurrency-of-software-timers-with-loop/27060>\
**Category:** Firmware\
**Created:** [November 6, 2016, 2:23am UTC](https://community.particle.io/t/concurrency-of-software-timers-with-loop/27060 "2016-11-06T02:23:50Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![ScruffR](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/scruffr/32/6952_2.png) [@ScruffR](https://community.particle.io/u/ScruffR)\
**Post date:** [November 6, 2016, 7:04am UTC](https://community.particle.io/t/concurrency-of-software-timers-with-loop/27060/2 "2016-11-06T07:04:50Z")

</div>

You might want to use `SINGLE_THREADED_BLOCK()` instead to still allow interrupts to get serviced.  
The Software Timers are running on a FreeRTOS thread alongside the application and the system thread with a 1ms time slice for timers and app (not sure about system).  
So single variable manipulations will not pose a problem since the code doesn’t actually run parallel. But if you are doing a lot of work on one variable (multi step calculations or extensive string building) a thread switch might occure.

Here is also some info  
[[SOLVED] Software Timer .isActive() returns false even when enabled](https://community.particle.io/t/solved-software-timer-isactive-returns-false-even-when-enabled/26650/13)

---

_[View the full topic](https://community.particle.io/t/concurrency-of-software-timers-with-loop/27060)._
