Every non-trivial real-time system monitors or processes more than one simultaneously occurring stream of events. The systems are – by their very nature – concurrent. But many real-time programmers, especially those working in small embedded systems, tend to avoid concurrent programming techniques – often because they believe that solutions to the technical problems created by concurrent programming are too complex and large for an embedded application. Managing concurrency needn't be complex if the environment and problem aren't complex. This paper will describe simple, practical solutions to mutual exclusion and deadlock problems.