A common problem when implementing an application is which task will create a shared kernel service. This includes a queue, mutex, or any other service that is shared between multiple tasks. The typical approach is to designate a “master” task that instantiates the shared service, with all other “slave” tasks left pending until the service is created. Such a method is not very elegant or easily expandable, and is open to usability or debug issues as the application expands. By introducing runtime safe service creation, common problems that occur as a design evolves and task priorities are modified are eliminated.