没错没错。。这里就是锁的使用场景。但这个复杂度不是协程带来的,而是并发带来的。
只要你想搞并发,又要访问同一个变量。那总要用点啥机制处理。
我自己一般不加锁,而是借用 QtCore 的 Copy On Write:
for (const QString &ele: QStringList(container)) {
doSomethingSync();
}
在这里,Qt 并不会真的复制。只有另外一个协程修改了 container 的时候才会复制一次。适合读多写少的场景。写多的就没办法,加协程锁吧。协程锁也是非常轻量的。
【 在 Algoquant 的大作中提到: 】
: 协程的临界区很麻烦。比如需要序列处理 容器里的使用元素:
: for auto& ele : container {
: co_await myfunction(ele);
: ...................
--
FROM 59.61.199.*