关于互斥锁,该如何处理

关于互斥锁
我自己有个模块, 但不涉及到多线程, 提供一个对外的接口:item_process, 外面有线程调用, 我的模块里面有个数组, 存放的全是实例化好的对象,和一个标识这个对象是否正在使用中的标志位flag, 当线程调用我这个方法的是后, 我就从数组中取一个类对象返回, 同时将标志位置1, 现在的问题就是, 我自己在我的类里面定义个 pthread_mutex_t mutex 的线程互斥锁, 每次获得对象的时候我都加锁, 然后释放,这样能阻止外面线程在我改标志位的时候, 造成线程获得我的处理对象出错么?? 
对线程不是太了解, 如果可以, 那么线程遇到锁的时候, 会wait在这里么? 然后等我释放锁之后, 另一个线程再从我定义的数组里面获取对象?

多谢

------解决方案--------------------
引用:
我自己有个模块, 但不涉及到多线程, 提供一个对外的接口:item_process, 外面有线程调用, 我的模块里面有个数组, 存放的全是实例化好的对象,和一个标识这个对象是否正在使用中的标志位flag, 当线程调用我这个方法的是后, 我就从数组中取一个类对象返回, 同时将标志位置1, 现在的问题就是, 我自己在我的类里面定义个 pthread_mutex_t mutex 的线程互斥锁, 每次获得对象的时候我都加锁, 然后释放,这样能阻止外面线程在我改标志位的时候, 造成线程获得我的处理对象出错么?? 
对线程不是太了解, 如果可以, 那么线程遇到锁的时候, 会wait在这里么? 然后等我释放锁之后, 另一个线程再从我定义的数组里面获取对象?

多谢

1、多个线程修改你的flag时(通过调用item_process),flag的状态很有可能会发生混乱,调用对象是否出错取决了你的对象做了什么操作;
2、如果有一个线程lock了锁,另一个线程只能等,只到获取锁的线程释放了锁;
------解决方案--------------------
你定义的也是系统实现的,只要使用没有问题,会影响到的,锁就是干这个的