关于后面栈的读取进程pr的问题和 join方法应该放的位置问题
Topic source因为read进程的下面这行代码,队列的get操作默认是阻塞式的,即队列中没有元素,这个进程就会一直卡在这条命令
value = q.get(True)
write那边的函数里因为每次put存元素都有一个sleep的操作,所以最后是write存了第三个元素'C',然后该进程sleep,然后read进程把元素取出来打印。write进程sleep时间结束被唤醒,然后该进程结束,主进程main之前一直阻塞在join那里,write结束后主进程继续往后,执行pr.terminate(),read进程也结束。
- 1
alienation
既然后面的pr进程中运行的read函数里是死循环:
为什么输出结果的时候停在
这个结果这里不动了呢,死循环的话应该是不断输出
这个语句才对。而结果是停在上述结果不动了,那么这个死循环最后究竟在循环什么语句呢?
对join的位置作了几次测试,发现join是用来把pr的启动和终止分割开,以防止pr进程启动即停止从而没有任何输出
但是这样子如果pw进程用时很短便结束了,而pr进程却需要耗费较多时间,会不会导致pr进程没有完全处理完队列的内容,结果就被终止了的情况发生呢?