毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 移动平台 >> 正文

Qt里创建子线程时,传入this指针出现问题

更新时间:2013-3-27:  来源:毕业论文

Qt里创建子线程时,传入this指针出现问题
 初学Linux下Qt编程,在设计一个简单的聊天程序的时候,使用到了线程。但是线程处理函数不属于UI界面类里面的成员函数,无法在线程处理函数中使用UI界面上的控件。于是我在创建线程的时候,传入了this指针。并且该线程处理函数已经申明成为全局函数和主界面类的友元函数。编译无错,运行时会发生卡死或者异常退出等问题。貌似功能代码设计没有问题,多次测试发现此时传入进来的this指针,在该函数中使用后就会发生这种问题。
    请教下这样使用this传入到底有没有问题,有没有要改进的地方。毕业论文 

具体代码如下:

头文件:(cli.h)

...
void* pthread_func(void*);   //线程处理函数

namespace Ui {
class Cli;
}

class Cli : public QMainWindow
{
    Q_OBJECT
   
public:
    explicit Cli(QWidget *parent = 0);
    friend void* pthread_func(void*);   //申明为友元函数
...

 

cli.cpp文件:
...
void Cli::on_startconnect_clicked()   //单击“连接”后
{
...

//创建线程
    if(pthread_create(&ntid,NULL,pthread_func,(void*)this) < 0)
    {
        QMessageBox::about(this,"error","pthread_create");
        return ;
    }
....

}

//线程处理函数,用于循环接受对方发送来的消息,并显示到界面上
void* pthread_func(void* tothis)
{
    Cli* mythis = (Cli*)tothis;     //定义临时变量,获取this指针

[1] [2] 下一页

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。