大佬求救:关于单线程与锁的问题

背景故事:今天跟同门复盘了她的文远知行面试,回忆到有这么一道题,面试官给了她两个函数A和B,在A函数里面通过lock_guard对mutex上锁,B函数里面通过lock_guard对mutex上锁的同时,调用A函数。main函数则直接调用了B函数。

问:此时会发生死锁吗?

正文:我有两段代码,代码A不会死锁,代码B会死锁。这是为什么呢?是因为主线程的特殊之处吗?

代码A不会发生死锁。

代码B发生死锁。

#C++#
全部评论
根据C++标准,这两段代码都有问题: 首先,一个线程多次lock同一个mutex会导致undefined behavior。 然后,一个mutex析构的时候,如果还有线程持有它,也可能导致undefined behavior。
1 回复 分享
发布于 2023-09-26 16:56 湖北
死锁是两个互斥锁互相等待,所以,单个死锁不太可能
点赞 回复 分享
发布于 2023-09-03 18:43 上海
都是死锁啊...自己可以跑一下
点赞 回复 分享
发布于 2023-09-01 21:22 浙江
怪事
点赞 回复 分享
发布于 2023-09-01 21:05 上海

相关推荐

不愿透露姓名的神秘牛友
07-11 11:16
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
1
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务