leafqycc / rknn-cpp-Multithreading

A simple demo of yolov5s running on rk3588/3588s using c++ (about 142 frames). / 一个使用c++在rk3588/3588s上运行的yolov5s简单demo(142帧/s)。
Apache License 2.0
431 stars 83 forks source link

rknnPool.hpp那里是不是缺个锁? #37

Open Czhazha opened 5 months ago

Czhazha commented 5 months ago

int rknnPool<rknnModel, inputType, outputType>::put(inputType inputData) 函数里面 push之前,是不是需要std::lock_guard lock(queueMtx);? 我是遇到了多线程会偶然崩溃的问题,然后加了之后运行就稳定了。

leafqycc commented 5 months ago

int rknnPool<rknnModel, inputType, outputType>::put(inputType inputData) 函数里面 push之前,是不是需要std::lock_guardstd::mutex lock(queueMtx);? 我是遇到了多线程会偶然崩溃的问题,然后加了之后运行就稳定了。

谢谢,确实,之前按照单个视频流输入来设计的,但是queue是非线程安全的,多线程多输入会导致出问题()

lsm140 commented 4 months ago

我就说 难怪!我都怀疑是官方rga画图的问题了,我是双摄像头输入

int rknnPool<rknnModel, inputType, outputType>::put(inputType inputData) 函数里面 push之前,是不是需要std::lock_guardstd::mutex lock(queueMtx);? 我是遇到了多线程会偶然崩溃的问题,然后加了之后运行就稳定了。

谢谢,确实,之前按照单个视频流输入来设计的,但是queue是非线程安全的,多线程多输入会导致出问题()

std::lock_guardstd::mutex lock(queueMtx);那它这个还适用于双摄像头输入多线程的场景吗?会崩溃吗

Czhazha commented 4 months ago

我就说 难怪!我都怀疑是官方rga画图的问题了,我是双摄像头输入

int rknnPool<rknnModel, inputType, outputType>::put(inputType inputData) 函数里面 push之前,是不是需要std::lock_guardstd::mutex lock(queueMtx);? 我是遇到了多线程会偶然崩溃的问题,然后加了之后运行就稳定了。

谢谢,确实,之前按照单个视频流输入来设计的,但是queue是非线程安全的,多线程多输入会导致出问题()

std::lock_guardstd::mutex lock(queueMtx);那它这个还适用于双摄像头输入多线程的场景吗?会崩溃吗

改过后,我稳定跑多线程输入4路8路都正常了。

lsm140 commented 4 months ago

用于双摄像头输

可以加下联系方式吗,我刚在push前添加了这一行代码 好像还是有问题,不知道哪里的问题

lsm140 commented 4 months ago

我就说 难怪!我都怀疑是官方rga画图的问题了,我是双摄像头输入

int rknnPool<rknnModel, inputType, outputType>::put(inputType inputData) 函数里面 push之前,是不是需要std::lock_guardstd::mutex lock(queueMtx);? 我是遇到了多线程会偶然崩溃的问题,然后加了之后运行就稳定了。

谢谢,确实,之前按照单个视频流输入来设计的,但是queue是非线程安全的,多线程多输入会导致出问题()

std::lock_guardstd::mutex lock(queueMtx);那它这个还适用于双摄像头输入多线程的场景吗?会崩溃吗

改过后,我稳定跑多线程输入4路8路都正常了。

我的vx号,San_Lsm.我的情况是推理本地视频,画面弹出来,但是就卡住。实时读取摄像头则是core dumped

lsm140 commented 4 months ago

多线程多输入会导致出问题()

那该怎么改呢?我就是多线程多输入会导致出问题,线程数只能设置成1,不然跑不了

wycrystal commented 2 months ago

我就说 难怪!我都怀疑是官方rga画图的问题了,我是双摄像头输入

int rknnPool<rknnModel, inputType, outputType>::put(inputType inputData) 函数里面 push之前,是不是需要std::lock_guardstd::mutex lock(queueMtx);? 我是遇到了多线程会偶然崩溃的问题,然后加了之后运行就稳定了。

谢谢,确实,之前按照单个视频流输入来设计的,但是queue是非线程安全的,多线程多输入会导致出问题()

std::lock_guardstd::mutex lock(queueMtx);那它这个还适用于双摄像头输入多线程的场景吗?会崩溃吗

改过后,我稳定跑多线程输入4路8路都正常了。

请问修改哪里可以输入多路摄像头呀?

wycrystal commented 2 months ago

int rknnPool<rknnModel, inputType, outputType>::put(inputType inputData) 函数里面 push之前,是不是需要std::lock_guardstd::mutex lock(queueMtx);? 我是遇到了多线程会偶然崩溃的问题,然后加了之后运行就稳定了。

谢谢,确实,之前按照单个视频流输入来设计的,但是queue是非线程安全的,多线程多输入会导致出问题()

如果是单路摄像头、多线程,这里还需要加锁吗?