你说的例子我想是这样,
(A,a)是协程运行在线程1,
(B,b)是协程在线程2,
a,b要访问共同资源所以要加锁,但a,b之间不是协程而是线程关系。
最好你能把代码贴上来。
【 在 hgoldfish 的大作中提到: 】
:
: 锁有两个功能,一是用作内存屏障(memeory barrier),二是逻辑同步原语。单线程多协程可以免去内存屏障,但是同步原语是省不掉的。
:
: 比如几个协程共用一个 socket 写数据。。这是很有可能的,现在的 HTTP2/HTTP3 都是多流,一条 tcp 流里面好几个 HTTP 请求。
:
: 因为协程网络库都会在网络阻塞的时候切换到其它协程,如果刚好两个协程要向服务端发送了 HTTP 请求,这个 tcp 流就乱了,一会儿这个协程写,一会儿另外一个协程写。这肯定不行的对吧。解决方案就是锁,或者队列——但队列背后也是一个锁。
:
: --
: 灭绝人性啊
发自「今日水木 on HUAWEI G750-T01」
--
FROM 115.52.184.*