
假设有 A,B,C 三个函数
1.A 执行时,不能并发 B 或者 C
2.B 或 C 执行时,不能并发 A
3.B,C 之间可以并发执行
这个场景锁应该怎么处理,C/C++
1 sagaxu 2018 年 8 月 27 日 via Android 搞一个调度器,只锁调度器 |
3 des 2018 年 8 月 27 日 via Android 冲突的是资源,对资源加锁,函数持有资源 |
4 Monad 2018 年 8 月 27 日 A 写锁 B/C 读锁 |
5 paparika OP @Monad 好像是正解。读写互斥,读读不互斥对吧。另外如果我的场景是 A,B 两个函数,AB 间互斥,AA 互斥,BB 并发,也是用读写锁对吧 |
6 4357 2018 年 8 月 27 日 读写锁正解。 还有一种办法,把 BC 封装到 D 中,D 和 A 互斥锁。 |
8 linyinma 2018 年 8 月 27 日 创建两把锁: A () { lock(lck1); lock(lck2); //do something lock(lck2); lock(lck1); } B() { lock(lck1); //do something lock(lck1); } C() { lock(lck2); //do something lock(lck2); } |
9 linyinma 2018 年 8 月 27 日 //do something 后是 unlock |
12 linyinma 2018 年 8 月 27 日 注意 注意 “并发” 不等于 “并行” 不要偷换概念 |