- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我一直在使用 opencv 开发实时跟踪系统。几天前,我不得不开始使用 directshow(这对我来说是全新的),因为我需要网络摄像头的更高分辨率。分辨率越高,CPU 使用率就越高。仅使用没有任何 opencv 算法的 directshow 时,cpu 以 50% 的速度运行。 (我有双核 = 一个核的 100% 使用率)
所以现在我需要扩展这个系统,以便它使用我的两个核心。
我从微软找到了这个很好的例子并且能够运行它,使用我的两个核心:
void test1(){
parallel_invoke(
[]() { run1(); },
[]() { run2(); }
);
}
这运行完美,我能够使用大约 85% 的总 cpu(只有 2 个带有循环的函数)。现在我想在我的其他系统中使用它。而且我不知道该怎么做。
我的系统的简短描述:
int main(){
startDirectshow()
};
startDirectShow(){
//code for creating the directshow filter graph. including iSampleGrabber filter.
}
sampleCallBackFunction(....){
// function called for every frame in the graph
}
到目前为止一切正常,每一帧都会调用 sampleCB(或者至少每秒多帧,使用它时可能会丢失帧?!)
我的想法是让“sampleCallBackFunction()”在第二个内核上运行(我不想将它锁定到特定的内核,只使用第一个可用的内核)
但是我找到的示例从同一个地方同时启动两个函数。是否有可能以某种方式告诉系统“sampleCallBackFucntion”应该在另一个核心上运行?
我的另一个想法是将数据存储在“sampleCallBackFunction()”中,并将 bool“newFrameAvailable”设置为 true。并让另一个线程从全局数组中拉取数据。
while(true)
If (newFrameAvailable){
get-next-frame-in-buffer-and-do-opencv-algorithm();
}
else{
do-nothing();
}
}
所以。我的问题:如何从另一个函数内部调用一个函数(“sampleCallBackFunction”是从“startDirectshow”调用的)?
谢谢!
最佳答案
你的问题不是很清楚,但我想你想在另一个线程中调用 sampleCallbackFunction
。 (函数通常在另一个函数内部调用,这使得调用堆栈...)
因为 DirectShow,您的 sampleCallBackFunction
很可能已经在与您的主线程不同的流式线程上运行。当然,流线程上发生的所有事情都是一个逻辑核心的负担。
然后,如果您在 sampleCallbackFunction
中创建另一个线程,您的系统足够智能,可以在可用核心上分配工作,这不是问题。但我怀疑 parallel_invoke
是否能让您灵活地做您必须做的事情,我建议您寻找 CreateThread
如果您真的想在那里创建另一个 worker。
顺便说一句:在 GUI 应用程序中,在另一个线程中调用函数的最简单方法是使用 SendMessage
,因为调用总是分配给创建窗口的线程。尽管如此,那个电话还是被阻止了……
关于c++ - 多核,使从函数内部调用的函数在第二个核上运行。直接秀,opencv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16521075/
我使用 4 核 i7 CPU(8 个逻辑核),debian linux 虚拟机也是 debian linux 程序使用 gcc 编译,没有进行特殊优化(默认编译设置) 我循环了该程序 1000 次。当
我有一个实时 linux 桌面应用程序(用 C 语言编写),我们正在移植到 ARM(4 核 Cortex v8-A72 CPU)。在架构上,它结合了高优先级显式 pthread(其中 6 个)和一对
我已经在 Digital Ocean ubuntu 实例上安装了 Solr 6: install_solr_service.sh solr-6.1.0.tgz 并验证 Solr 正在运行。但是,我无法
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
我有一个大约 2000 维的特征向量。都是直方图特征。 我不知道在我的情况下哪个有效:将 SVM 与 RBF 核或卡方核应用? 你能建议我在我的情况下有效的内核吗? 最佳答案 一般来说,卡方和交集内核
我们有一台 12 核 MacPro 来进行一些蒙特卡罗计算。其 Intel Xeon 处理器启用了超线程 (HT),因此实际上应该有 24 个进程并行运行才能充分利用它们。然而,我们的计算在 12x1
所以这段代码: library(plyr) library(doMC) registerDoMC(cores=2) x=1:100 llply(x, some_function, .parallel=
Netty Server 流到 Netty 客户端(点对点,1 对 1): 好的 案例:Server和Client都是12 cores , 1Gbit NIC => 以每秒 300K 200 字节消息
我对以下 C# 代码的线程激活顺序感到困惑。它创建了 10 个线程,随机启动它们,每个线程模拟执行一个耗时的工作 10 次,如果你检查调试输出,线程似乎不是随机选择的,请看下面的输出示例,注意线程 #
这是我考试时提出的问题。我给出了以下答案,我的得分是0分。教授甚至不同意给予任何部分的认可,也没有告诉我我的答案有什么问题。谁能帮我找出我的答案有什么问题吗? 这是我在考试中给出的答案。缺点是:1)
我有一个 Intel Xeon E5-2620,它有 24 个 CPU。我写了一个应用程序,它创建 24 个线程来使用 openssl 解密 AES。当我在 100 万数据解密时将线程数从 1 增加到
我正在开发一个在图层上绘画的应用程序。这是一个示例代码,展示了我的绘画方式。 UIImageView * currentLayer = // getting the right layer... UI
在带有 2Tb DRAM 的 80 核 (160HT) nehalem 架构上运行一些测试后,我遇到了一个小的 HPC 问题: 当每个线程开始请求有关“错误”套接字上的对象的信息时,具有 2 个以上套
由于潜在的性能问题,我刚刚将测试实例从小型“标准”(1 核,1.75GB RAM)实例升级到中型“标准”实例(2 核,3.5GB RAM),这似乎是快速击中。我们确实存在应用程序池回收和必须重新预热某
我知道,为了在 Android 中保持响应式界面,繁重的工作必须在独立线程中完成。我很清楚如何实现这一点(通过使用 AsynTask...等),这不是问题的重点,只是让每个人都知道。 但是我已经在一个
我写了一个简单的多线程 Java 应用程序,主要方法只创建 5k 个线程,每个线程将循环处理一个包含 5M 条记录的列表。 我的机器规范: CPU 内核:12 个内核 内存:13Gb RAM 操作系统
让我们假设我们有固定数量的计算工作,没有阻塞、 sleep 、I/O 等待。工作可以很好地并行化——它由 100M 小而独立的计算任务组成。 什么是 4 核 CPU 的速度更快 - 运行 4 个线程或
我正在使用 WEKA/LibSVM 来训练术语提取系统的分类器。我的数据不是线性可分的,因此我使用 RBF 内核而不是线性内核。 我关注了guide from Hsu et al.并迭代 c 和 ga
谁能告诉我为什么在具有四个 ARMv7 处理器的 Jetson TK1 上调用 Python 的 multiprocessing.cpu_count() 函数会返回 1? >>> import mul
我是一名优秀的程序员,十分优秀!