Multithreading 单核处理器:Pthreads和OpenCV的不良行为
我正在开发一个监视机器人,其中我使用了一块PcDuino2板(ARM Cortex A8单核)作为项目中唯一的处理器。Ubuntu作为我选择的操作系统安装在主板上 我的软件是这样编写的:我使用Posix线程,我有一个线程TCP服务器,它从HTML接口(Websocket)接收命令,因此,一旦服务器接收到这些命令,就会验证这些命令,并调用一些函数来移动机器人(上、下、左、右)或者启动/停止查找彩色球的OpenCV线程(仅举一个示例) 事实上,当OpenCV线程没有运行时,机器人的移动会按预期进行,但当OpenCV线程运行时,我无法使用我的界面移动机器人(即使正确接收命令并调用正确的函数) OpenCV线程似乎消耗了所有处理器资源 嗯,我的源文件托管在我的github中: 要查看的主要文件是server.cpp和tasks.cpp,因此您将更好地理解我所写的内容Multithreading 单核处理器:Pthreads和OpenCV的不良行为,multithreading,opencv,posix,robotics,Multithreading,Opencv,Posix,Robotics,我正在开发一个监视机器人,其中我使用了一块PcDuino2板(ARM Cortex A8单核)作为项目中唯一的处理器。Ubuntu作为我选择的操作系统安装在主板上 我的软件是这样编写的:我使用Posix线程,我有一个线程TCP服务器,它从HTML接口(Websocket)接收命令,因此,一旦服务器接收到这些命令,就会验证这些命令,并调用一些函数来移动机器人(上、下、左、右)或者启动/停止查找彩色球的OpenCV线程(仅举一个示例) 事实上,当OpenCV线程没有运行时,机器人的移动会按预期进行,
使用单核处理器可以使电机与OpenCV线程处理并行运行?在处理过程中可以添加一些微小的休眠命令吗?或者使用线程优先级可能会有所帮助?我尝试在另一个线程中实现马达移动,然后当服务器收到命令时,它执行一个调用马达移动函数的线程,然后执行一个睡眠。但它不起作用。我在谷歌上搜索了一些与Posix线程优先级相关的代码片段,但没有成功。你有什么要帮忙的吗?谢谢。我来测试一下。但是我发布的目的不是“解决”我的代码的不良行为,而是讨论解决问题的替代方法,以提高我的编码技能。我不确定“正确”的方法是什么。可能是som事件循环之类的系统?