Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么IP摄像头在使用两个线程访问时的FPS比使用两个进程(linux)访问时的FPS低?_Linux_Multithreading_Process_Ip Camera - Fatal编程技术网

为什么IP摄像头在使用两个线程访问时的FPS比使用两个进程(linux)访问时的FPS低?

为什么IP摄像头在使用两个线程访问时的FPS比使用两个进程(linux)访问时的FPS低?,linux,multithreading,process,ip-camera,Linux,Multithreading,Process,Ip Camera,如果我为每个摄像头运行两个单独的进程,我将每秒从两个IP摄像头(连接到计算机上的两个网络端口)获得210帧。当使用创建两个线程(每个摄像头一个线程)的单个进程访问摄像头时,来自每个摄像头的FPS在150到200之间波动。两种情况下的参数相同(帧宽=1320;帧高=120;快门时间=1.0毫秒) 为什么会发生这种情况?我认为两个线程共享分配给一个进程的网络资源配额,但我不确定哪些资源正在成为瓶颈。在多线程情况下,如何从两个摄像头获得210 fps?我正在使用Linux CENTOS 6.4 PS:

如果我为每个摄像头运行两个单独的进程,我将每秒从两个IP摄像头(连接到计算机上的两个网络端口)获得210帧。当使用创建两个线程(每个摄像头一个线程)的单个进程访问摄像头时,来自每个摄像头的FPS在150到200之间波动。两种情况下的参数相同(帧宽=1320;帧高=120;快门时间=1.0毫秒)

为什么会发生这种情况?我认为两个线程共享分配给一个进程的网络资源配额,但我不确定哪些资源正在成为瓶颈。在多线程情况下,如何从两个摄像头获得210 fps?我正在使用Linux CENTOS 6.4

PS:我尝试了第三种方法,在主(父)进程中访问一个摄像头,在使用fork()创建的子进程中访问另一个摄像头,这两个摄像头上的速度都为210 fps。然而,创建子进程并不适合我的需要。我需要一个解决方案,用于单个进程的线程访问摄影机的情况


PPS:我在/etc/sysctl.conf中将net.core.rmem_max、net.core.rmem_default、net.core.wmem_max和net.core.wmem_default设置为1048576。更改前,其值为131072。这一变化在其他方面对我有所帮助,但对这个问题没有帮助。

它可以是任何共享资源。如果没有实际的代码,就不可能真正提供帮助。@AndrewHenle代码只包括调用摄影机库函数打开摄影机,然后设置宽度、高度、快门、fps和亮度,然后以循环方式从摄影机中获取帧。在多线程情况下,两个线程执行完全相同的操作。两个案例的源代码之间唯一的区别是,我在其中一个案例中使用pthread_create()创建了两个线程。它可以是任何共享资源。如果没有实际的代码,就不可能真正提供帮助。@AndrewHenle代码只包括调用摄影机库函数打开摄影机,然后设置宽度、高度、快门、fps和亮度,然后以循环方式从摄影机中获取帧。在多线程情况下,两个线程执行完全相同的操作。这两种情况的源代码之间的唯一区别是,我在其中一种情况下使用pthread_create()创建了两个线程。