Closed Czhazha closed 2 months ago
我在node的run里面执行了这一段测试代码
while(true) { RKDecoder *Decoder = new RKDecoder(); if ( !Decoder->Open("rtsp://admin:admin@192.168.1.169:554/mainstream") ) { ; } while (true) { sleep(1); } }
其中,Open是调用一个库,执行的是视频流拉流打开地址的操作。 然后这个进程A跑起来后,同样再启动一个进程B,一样的执行程序。 这时候ctrl+c停掉进程A,这时进程B也会被终止。 但是,顺序相反,则不会出问题,就是先杀掉进程B,这时A还正常运行。
我一开始怀疑解码操作的问题,另外写了demo,只保留解码操作且跟上述代码基本一样,同样顺序执行,都是各自独立终止和启动,这也是应该符合预期的。另外写的demo,也用std::thread单独起一个线程来执行,也是正常的。
在node的run里面,也只有这一句代码Open函数调用会导致这个问题,没有这一句也都正常如预期。
色图本身,并没有任何跨进程的内容。如果 遇到这种情况,建议考虑排查 Decoder->Open() 中的内容。
CGraph 在不同进程中,完全独立,没有任何联系。
了解,谢谢回复。
我在node的run里面执行了这一段测试代码
其中,Open是调用一个库,执行的是视频流拉流打开地址的操作。 然后这个进程A跑起来后,同样再启动一个进程B,一样的执行程序。 这时候ctrl+c停掉进程A,这时进程B也会被终止。 但是,顺序相反,则不会出问题,就是先杀掉进程B,这时A还正常运行。
我一开始怀疑解码操作的问题,另外写了demo,只保留解码操作且跟上述代码基本一样,同样顺序执行,都是各自独立终止和启动,这也是应该符合预期的。另外写的demo,也用std::thread单独起一个线程来执行,也是正常的。
在node的run里面,也只有这一句代码Open函数调用会导致这个问题,没有这一句也都正常如预期。