请教个问题,我在B线程类里接收can信号,然后将数据封装成QVariant变量发送给A类;
在A类里从QVarinat变量里取出结构体类型struct can_frame,然后根据can_frame.can_id判断帧类型,再分开处理。
我在A类的a()函数作为槽函数,接收的QVariant变量并进行的can_id判断,我想在A类的b(),c(),d()这三个函数里做响应处理。
那么,我如何将a()函数里的can_frame结构体发送给b(),c(),d()这三个函数呢?
1.在a()函数中定义局部结构体变量,作为参数传递给b(),c(),d()。结构体作为参数传递的是指针吧?是引用传递吧?如果a()函数执行事件过长,在a()函数执行过程中,B线程类又发送了多次信号过来,会出现什么情况?
1.在A类里定义一个结构体变量作为类的数据成员吗?但B线程类不停的发数据过来,数据成员会不停地被改变,那么b(),c(),d()是否来得及处理?
2.a()函数再将数据作为信号的参数,发送信号给b(),c(),d()函数?这样是不是有点复杂了?
3.还有其他方法吗?
最近编辑记录 Gentlepig (2020-05-26 09:21:26)
离线
连接方式分为异步和同步。 A的处理没有跨线程。 不用考虑1。 2.就更不用考虑。 如果时同步连接, 可能会阻塞线程
离线
搜到了c++可以用引用参数,打算试一试。
void a()
{
struct can_fram recvFrame;
b(recvFrame);
...
}
void b(const struct can_frame &recvFrame)
{
...
}
离线