qt多线程间通信
2015-09-11 15:21
323 查看
//Qt多线程同步
QMutex g_mutex;
QWaitCondition g_waitobj;
//回调函数
int __cdecl CMediaServerCallBack::requestAuthorizeCallback(const char* a_device_uuid
, AuthorizedCode* a_auth_code, void* a_context)
{
//由于需要界面来作相应操作(主线程),所以只能用信号槽来处理
emit MS_CALLBACK->signalRequestAuthor(a_device_uuid, a_auth_code);
//由于需要等待界面的处理结果,所以需要阻塞该线程
//之前直接用while来做死循环
QMutexLocker mutexLocker(&g_mutex);
g_waitobj.wait(&g_mutex);
return 0;
}
//槽函数,响应回调函数中的 MS_CALLBACK->signalRequestAuthor(a_device_uuid, a_auth_code)
void CGUIMediaCenter::onRequestAuthor(const char* a_device_uuid
, AuthorizedCode* a_auth_code)
{
//修改 a_auth_code, 修改完成后,唤醒之前阻塞的线程
QMutexLocker mutexLocker(&g_mutex);
g_waitobj.wakeOne();
}
QMutex g_mutex;
QWaitCondition g_waitobj;
//回调函数
int __cdecl CMediaServerCallBack::requestAuthorizeCallback(const char* a_device_uuid
, AuthorizedCode* a_auth_code, void* a_context)
{
//由于需要界面来作相应操作(主线程),所以只能用信号槽来处理
emit MS_CALLBACK->signalRequestAuthor(a_device_uuid, a_auth_code);
//由于需要等待界面的处理结果,所以需要阻塞该线程
//之前直接用while来做死循环
QMutexLocker mutexLocker(&g_mutex);
g_waitobj.wait(&g_mutex);
return 0;
}
//槽函数,响应回调函数中的 MS_CALLBACK->signalRequestAuthor(a_device_uuid, a_auth_code)
void CGUIMediaCenter::onRequestAuthor(const char* a_device_uuid
, AuthorizedCode* a_auth_code)
{
//修改 a_auth_code, 修改完成后,唤醒之前阻塞的线程
QMutexLocker mutexLocker(&g_mutex);
g_waitobj.wakeOne();
}
相关文章推荐
- Qt Creator 搭建嵌入式开发环境
- 开始QT+OpenCV学问
- QT下使用OpenGL渲染Mesh的框架
- 使QT内建的对话框文字显示为中文 window7+vs2010+qt
- Qt 为自己的程序建立一个消息循环
- Pyqt4 实现窗口全屏显示
- Qt多工程多目录编译方法
- Qt 调用Fortran dll
- [置顶] Qt绘图控件QCustomPlot安装
- QT数据传输中的对象序列化与反序列化
- IBM MQTT basic information and support platforms
- MQTT Paho Getting Started
- Qt Creator设置快捷键
- PyQt自定义选择输入框(类似QQ登录输入框)
- QT学习之QString的arg方法
- QT 不能在指定目录生成目标文件
- Qt工具类
- Qt信号与槽实现原理
- Qt之QTableWidget
- 使用MsgPack配合Qt应用程序和node.js应用程序的数据传输