markparticle / WebServer

C++ Linux WebServer服务器
Apache License 2.0
3.49k stars 730 forks source link

Log另一个死锁问题 #89

Open oo33shan opened 1 year ago

oo33shan commented 1 year ago

BlockDeque满了的话,会等待消费者线程消费。但是没有释放Log中的锁,导致消费者线程也无法消费

image

image

image

Miyamoto-Konatsu commented 1 year ago

你说的是第三张图片里的锁没释放吗?123行会释放锁的

oo33shan commented 1 year ago

你说的是第三张图片里的锁没释放吗?123行会释放锁的

不是,是第一张和第二张里的mtx_

oo33shan commented 1 year ago

你说的是第三张图片里的锁没释放吗?123行会释放锁的 mtx_把消费者线程卡住了,没法把满了的BlockDeque中的内容写到文件中,使得BlockDeque一直是满的

Miyamoto-Konatsu commented 1 year ago

你说的是第三张图片里的锁没释放吗?123行会释放锁的 mtx_把消费者线程卡住了,没法把满了的BlockDeque中的内容写到文件中,使得BlockDeque一直是满的

队列满了的话,生产者不是执行else里的fputs语句,然后释放锁吗?

oo33shan commented 1 year ago

你说的是第三张图片里的锁没释放吗?123行会释放锁的 mtx_把消费者线程卡住了,没法把满了的BlockDeque中的内容写到文件中,使得BlockDeque一直是满的

队列满了的话,生产者不是执行else里的fputs语句,然后释放锁吗? C){ ODCQ$E}DF44}M(Y{)L

  1. 我去看了下原来我自己写的时候把这句删了,导致死锁了。谢谢你的回复