[讨论]请教各位在设计服务端程序的时候,是如何设计线程同步的呢

[讨论]请问各位在设计服务端程序的时候,是怎么设计线程同步的呢?
例如多个线程会竞争多片数据(也就是有多个锁),如何控制好锁的获取和释放,以避免死锁出现呢?

或者说碰到死锁的时候,怎样处理,以让服务继续执行呢?

希望能有具体可行的例子

------解决方案--------------------
线程不是可以加互斥吗,那样就可以执行完一个操作再执行下一个
------解决方案--------------------
感觉没说清楚
不清楚你说的 多重互斥是个什么概念
------解决方案--------------------
加锁有个原则:尽可能在最开始需要加锁的地方加锁,完成操作后应该尽可能快解锁,锁里面处理的东西应尽可能少。
------解决方案--------------------
我一般在需要处理数据的地方,弄成一个队列,类似消息队列一样,每次只处理一个。为了加快速度,只有处理数据的时候进去队列(前期预处理完才进入队列),处理完马上从队列中删除。

------解决方案--------------------
对,遇到瓶颈,并行也只能排队(串行化到队列)经过
------解决方案--------------------
不排队也是只能一个线程处理,别的都卡住的
------解决方案--------------------
死锁这个问题应该从逻辑捋顺开始,可以试着把流程图画出来,然后在必须的地方加锁,如果害怕死锁,就在最外面加大互斥,会损失效率的。

总感觉这个问题应该捋逻辑。
------解决方案--------------------
可以考虑排队机制!
------解决方案--------------------
我觉得可以用信号量很好的解决这个问题,借助AND型信号量集可以达到要么几个锁一起拿,要么一个不拿,把信号量机制和锁机制结合起来用。