【发布时间】:2014-06-26 09:12:46
【问题描述】:
对于我现在正在编写的程序,我需要您的建议。首先,让我介绍一下它是什么:
我设计了一个带有按钮之类的 IHM:
这是我的main window:
当我点击QButton Supervision 时,我将进入这个窗口:
IHM 完成后,我编写了一个可以工作的服务器,并处理帧接收。现在我要做的是同时启动服务器和IHM,当我点击监督时,在QTableWidget中显示服务器接收到的信息。
为此,我想我需要:THREAD AND SHARED MEMORY SEGMENTATION。
Thread:启动服务器和 IHM,Memory Segmentation:将服务器接收到的数据提供给我的 IHM。
我尝试在我的main window 的构造函数中启动服务器,这是我的main window 中的代码:
//Constructor
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//Start my window (initialisation of button code
...
//Thread of the server
std::thread t1(lancerServeur);
t1.join();
}
//Server function lauch by thread
void MainWindow::lancerServeur(){
Server s;
while(1){
s.readData();
}
}
PROBLEM : 服务器启动但不是IHM,我不明白为什么,因为它应该在一个线程中......
您还认为共享内存分段是个好主意吗?如果是的话,你有一个很好的链接给我吗?
谢谢。
【问题讨论】:
-
你在
t1.join()上被阻塞,它等待 t1 结束,然后离开你的构造函数 -
@jbh Ho 看起来不错,你有解决方案吗?因为我从线程的使用开始...
-
Belloiel:将线程存储在成员变量中,而不是堆栈中。让你的服务器线程去吧,在你真的想确保它自己结束之前不要加入
-
@jbh 谢谢,你能解释一下怎么做吗?因为我不明白我们如何将线程存储在成员变量中。另外,您如何看待共享内存分段?你可以发帖回答,我会接受的,谢谢你的帮助。
标签: c++ multithreading qt network-programming