I want to access a structure variable by mutex, so I write three functions below.<div>I'm not sure whether atomic_dec(), in line 81, can ensure only one work-item grab this mutex lock, due to the return value.</div><div>If it's not OK, how can I correct it to implement mutex access? </div><div>Thank you!</div><div><br></div><div><div> 71 void MutexInit(int* p)</div><div> 72 {</div><div> 73     *p = 1;</div><div> 74 }</div><div> 75</div><div> 76 void MutexLock(int* p)</div><div> 77 {</div><div> 78 MutexLock_start:</div><div> 79     if (1 == *p)</div><div> 80     {</div><div> 81         if (atomic_dec(p) == 1)</div><div> 82             return;</div><div> 83         else</div><div> 84             atomic_inc(p);</div><div> 85     }</div><div> 86     goto MutexLock_start;</div><div> 87 }</div><div> 88</div><div> 89 void MutexUnlock(int* p)</div><div> 90 {</div><div> 91     atomic_inc(p);</div><div> 92 }</div></div><div><br></div>