gpt4 book ai didi

c++ - 如果一个堆栈协程锁定一个互斥量然后让出怎么办?

转载 作者:太空宇宙 更新时间:2023-11-04 11:30:14 26 4
gpt4 key购买 nike

如果一个stackful coroutine锁住一个mutex(我们先考虑一个非递归mutex)然后yield,当它重新进入执行时,运行它的线程t2可能和之前的不一样yield t1 之前的一个。那么会发生什么?

如果互斥量是递归互斥量,t1t2 谁拥有互斥量?

最佳答案

它只会保持锁定状态。

如果 ren-enter 发生在不同的线程上,则互斥量将被错误的线程拥有,最多导致 UB。

Stackless 协程,另一方面只是变相的开关,所以如果您使用 lock_guard 和类似的启用 RAII 的容器,那么可能会有过多的锁定/解锁,以及 yield 发生时的竞争在锁下

关于c++ - 如果一个堆栈协程锁定一个互斥量然后让出怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25063395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com