在毕老师视频第12天-03视频里说了线程通信.
源码我就不贴了,其中,A线程写数据,B线程读数据,为了数据的同步,加了锁,同时,为了防止数据覆盖(其实我认为也是同步),加了flag标志,根据flag标志睡眠线程.
而我看到,flag也在锁内,并且也是锁对象,这样,如果A线程睡眠了,然后B线程运行,此时flag还是锁住的,B线程应该拿不到运行权,不能唤起A线程,应该造成死锁,但是实际运行却没有,这是怎么回事呢?
本文深入探讨了在毕老师视频第12天-03中提及的线程通信实现方式及其潜在死锁问题,通过分析加锁与flag标志的使用,解释为何实际运行并未遇到预期的死锁情况。
在毕老师视频第12天-03视频里说了线程通信.
源码我就不贴了,其中,A线程写数据,B线程读数据,为了数据的同步,加了锁,同时,为了防止数据覆盖(其实我认为也是同步),加了flag标志,根据flag标志睡眠线程.
而我看到,flag也在锁内,并且也是锁对象,这样,如果A线程睡眠了,然后B线程运行,此时flag还是锁住的,B线程应该拿不到运行权,不能唤起A线程,应该造成死锁,但是实际运行却没有,这是怎么回事呢?
1989
1287
1810

被折叠的 条评论
为什么被折叠?