找回密码
 立即注册
收起左侧

子线程与子线程之间通讯

4
回复
929
查看
[复制链接]
累计签到:168 天
连续签到:4 天
来源: 2019-2-14 19:27:05 显示全部楼层 |阅读模式
5Qter豆

void Thread::run()
{
    while(stopped)
    {
        {
        msleep(500);
        mutex.lock();
        strTmp = QString::fromStdString(myCom->readAll().toStdString());
        temp.append(strTmp);

        cnt +=1;
        qDebug() << cnt << ":" <<this->currentThreadId();
        mutex.unlock();
        }
    //把接受到的数据发给主线程
    emit this -> serialFinished(strTmp);
    }
}


这段是子线程接收串口传过来的数据,问题是如果再创建一个线程用于解析数据,那么子线程中接受到的数据(strTmp)变量怎么传输给另一个子线程呢?

最佳答案

查看完整内容

全局变量,在多线程之间可能你需要加锁 ~
阿里云
回复

使用道具 举报

累计签到:531 天
连续签到:1 天
2019-2-14 19:27:06 显示全部楼层
全局变量,在多线程之间可能你需要加锁 ~
回复

使用道具 举报

累计签到:531 天
连续签到:1 天
2019-2-15 13:13:36 显示全部楼层
这个问题其实也好解决,线程之间你可以用 信号传递,这个 Qt 是支持的,关键是你的两个线程在哪里开启,只要在线程开启前,能同时获取两个线程的句柄,通过信号-槽关联一下逻辑,问题不大  ~
回复

使用道具 举报

累计签到:168 天
连续签到:4 天
2019-2-20 17:59:33 显示全部楼层
Since 发表于 2019-2-15 13:13
这个问题其实也好解决,线程之间你可以用 信号传递,这个 Qt 是支持的,关键是你的两个线程在哪里开启,只 ...

我把(strTmp)定义成全局,在另一个子线程直接用可以,不知道这样会不会有什么问题
回复

使用道具 举报

累计签到:168 天
连续签到:4 天
2019-2-20 20:23:35 显示全部楼层
Since 发表于 2019-2-20 19:43
全局变量,在多线程之间可能你需要加锁 ~

ok~                                                                           
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册