草庐IT

event_loop

全部标签

c++ - g_main_loop_run 阻塞 Qthread 并且不允许停止视频

我为gstreamer创建了一个单独的类来流式传输视频。此类通过使用moveToThread()在单独的线程上运行。我正在使用Qt5.5进行开发。当我在主线程上发出startcommand时,Qthread启动并且gstreamer使用g_main_loop_run流式传输视频。这绝对没问题。但不知何故g_main_loop_run阻塞了线程,当我发出信号以停止来自主线程的视频时,它不会执行gstreamer类中的插槽。有人可以告诉我如何解决这个问题吗?我可以用其他命令替换g_main_loop_run或者可以使用g_main_loop_quit(gloop);以另一种方式。voidS

c++ - C/C++ : goto into the for loop

我有一点不寻常的情况-我想使用goto语句来跳进入循环,而不是从中跳出。这样做有充分的理由-此代码必须是某个函数的一部分,该函数在第一次调用后进行一些计算,返回新数据请求并需要再次调用才能继续。不能使用函数指针(显而易见的解决方案),因为我们需要与不支持函数指针的代码互操作。我想知道下面的代码是否安全,即它会被所有符合标准的C/C++编译器正确编译(我们需要C和C++)。functionfoo(intnot_a_first_call,int*data_to_request,...otherparameters...){if(not_a_first_call)gotorequest_ha

时间:2019-05-01 标签:c++: dynamic number of nested for loops (without recursion)

我正在编写一个遍历n位数字的每个排列的代码段。例如,如果n=3,我想遍历以下每个元素:0,0,0...0,1,0...1,0,0...2、3、4...9、9、9使用嵌套的for循环很容易编写代码:for(digit10to9)for(digit20to9)for(digit30to9)但我想将其概括为n位数。例如,如果n=10,我现在需要10个嵌套的for循环。我已经考虑过这一点,并意识到可以使用递归来解决这个问题(深度优先搜索一棵树,每个节点有10个子节点,从0到10,并在深度n处停止)。但我的目标是高性能,所以我不想因为开销而使用递归。我还有什么其他选择?

c++ - 为什么 "constructor-way"允许在 "for-loop"中声明变量,但不允许在 "if-statement"中声明变量?

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:Whycan'tvariablesdefinedinaconditionalbeconstructedwitharguments?考虑这个简单的例子:/*1*/intmain(){/*2*/for(inti(7);i;){break;}/*3*/if(inti(7)){}/*4*/}为什么第2行编译得很好,而第3行给出了错误?这对我来说有点奇怪,为什么if语句在这方面比for循环更糟糕?如果这是特定于编译器的-我使用gcc-4.5.1进行了测试:prog.cpp:Infunction'intmain()':p

java - C++ 与 Java : endless loop creating objects only crashes C++

这是我的一本书中的一个问题(没有附加答案),我已经思考了几天了。答案仅仅是因为C++代码最终会崩溃,因为它在每次迭代后都会创建一个垃圾内存单元吗?ConsiderthefollowingJavaandC++codefragments,partsoftwoversionsofaGUIbasedapplicationwhichcollectsuserpreferencesandusethemtoassembleacommandanditsparameters.Themethod/functiongetUserCommandSpecification()returnsastringrepre

c++ - 什么是 "terse ranged-based for loops"?

clang已开始实现terseranged-basedforloops来自n3994.通常在引入基于范围的for循环时,我们会看到for(auto&v:vector)形式的代码,以避免不必要的复制。似乎n3994建议for(auto&&v:vector)在各方面都优越。我有几个问题:后一种形式比前一种有什么优势?为什么我们通常使用auto&而不是auto&&如果后者显然是有利的?是否使新的基于范围的循环等效于auto&&会破坏现有代码?它会对新代码产生实际影响吗?这不会向初学者介绍他们的代码实际上等同于auto&&的问题吗? 最佳答案

c++ - 哪个更快/首选 : memset or for loop to zero out an array of doubles?

doubled[10];intlength=10;memset(d,length*sizeof(double),0);//orfor(inti=length;i--;)d[i]=0.0; 最佳答案 如果您真的在乎,您应该尝试衡量。然而,最便携的方式是使用std::fill():std::fill(array,array+numberOfElements,0.0); 关于c++-哪个更快/首选:memsetorforlooptozerooutanarrayofdoubles?,我们在Sta

c++ - input_event 结构描述(来自 linux/input.h)

谁能告诉我input_event结构使用的数据类型的属性是什么?在input.h文件中定义如下:structinput_event{structtimevaltime;__u16type;__u16code;__s32value;};但没有其他描述!甚至谷歌搜索也没有给我带来任何有趣的东西。我唯一知道的是,time给出了纪元的秒数​​或毫秒数,value给出了按下按钮的代码。但即使是value属性的值对我来说也不是很清楚。在我的程序中,每次击键都会产生六个事件。以下事件是按ENTER键的响应:type=4,code=4,value=458792type=1,code=28,value=

events - 如何让 nodejs 服务器监听 AWS SQS?

在详细解释问题之前,我先告诉你我目前的做法。我有一个运行setInterval()的js脚本。并且每个间隔,我都会调用SQS从队列中获取消息。如果有消息,那么我处理它。因此,它将无限运行,直到我终止该进程。我之前也建过一个Node服务器(使用nodejs.org中的例子)所以,我想知道的是,...而不是让setInterval定期运行。有没有办法,如果SQS中有一条新消息,那么它会触发一个事件并处理该消息? 最佳答案 这个问题已经超过2年了..但是有比更改轮询间隔更好的方法。而是将队列的接收消息等待时间设置为最长20秒。然后您可以进

events - 如何在 node.js (express.js) 中创建自定义事件监听器?

我有一个带有很多嵌套回调的巨大函数。我想让它更干净,更容易处理。所以,我正在考虑使用自定义事件监听器就像,当一个函数完成后,在回调中,而不是放一大块代码,它只是发出一个事件,然后监听器就会运行。那么,如何在node.js中做到这一点?我仍在寻找一个很好的例子来指导我。 最佳答案 你可以这样设置事件app.on('event:user_created',callback);然后你可以发射它们app.emit('event:user_created',data);express.js使用EventEmitter。