Are there any synchronization primitives in snap like mutex, semaphore

Hi! Snap! doesn't have truly asynchronous threads; scheduling happens only when a thread deliberately yields, which it does at the bottom of the looping primitives and at explicit WAIT blocks. (There are a few other cases, the primitives that are expected to be time-consuming, such as GLIDE.) In particular, a thread is never interrupted between the computation of the test part of an IF and the computation of the chosen action. This pretty much eliminates the need for mutexes. If you want to teach about synchronization you'll have to simulate asynchronous events by saying, for example,
untitled script pic

(The above isn't actually quite true. If a thread runs for a really long time, the Snap! scheduler will force-yield it, so that you can recover from infinite loops in your code.)