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

背景故事:今天跟同门复盘了她的文远知行面试,回忆到有这么一道题,面试官给了她两个函数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-01 21:05 上海
滴滴
校招火热招聘中
官网直投
都是死锁啊...自己可以跑一下
点赞
送花
回复
分享
发布于 2023-09-01 21:22 浙江
死锁是两个互斥锁互相等待,所以,单个死锁不太可能
点赞
送花
回复
分享
发布于 2023-09-03 18:43 上海

相关推荐

1 9 评论
分享
牛客网
牛客企业服务