草庐IT

QT多线程

全部标签

c++ - Qt modbus串口流控处理

我正在通过串行端口使用QModbusDevice编写一个小程序(使用QModbusRtuSerialMaster类)并且遇到了一些问题。其中一个问题好像是串口的流控不对。检查串行端口嗅探器,我看到工作客户端在发送请求时将RTS设置为打开,然后关闭RTS以接收回复。当我使用QModbusRtuSerialMaster发送没有发生的消息时。与工作客户端相比,消息被正确发送(有时,是另一个问题的主题)。只是控制流不起作用,导致服务器无法回复。我已将相关COM端口的Windows端口设置设置为硬件流量控制,但没关系,嗅探器仍然报告没有流量控制。有没有办法让QModbusRtuSerialMas

windows - Windows 中的 64 位 Qt 和 Postgres 插件

我有一个使用Postgres插件的32位Windows/Qt应用程序。最近,我很想将应用程序变成64位应用程序。所以我检查了Qt文档的说明,成功地将Qt及其库构建为64位。现在的问题是Postgres不提供64位Windows的库!显然,QtPostgres插件无法编译。我在谷歌上搜索了很多,但没有找到任何解决方案,只有一大堆无用的讨论存档帖子。那么,有没有办法让我在Windows中使用Postgres时将我的应用程序编译为真正的64位?附录问题不是在Windows上将Postgres作为真正的64位运行(whichcannotbedone)(我不管理数据库,所以我什至不在乎),而是将

c++ - GetSystemInfo 是否为您提供虚拟 CPU 的总数(即超线程)?

GetSystemInfo会给你物理CPU/内核的数量,但我想知道虚拟CPU的总数。IE。在新的Nahelam芯片上,它们有4个内核,但显示为8个cpu。如果GetSystemInfo没有给出这个信息,我需要什么API(我见过一个获取逻辑处理器数量的函数,但它只适用于Vista。我需要支持XP)? 最佳答案 GetLogicalProcessorInformation功能(WindowsVista、WindowsXPProfessionalx64Edition、WindowsXPwithSP3)

windows - QT:直接渲染到 DC 的滚动小部件

我正在尝试创建一个小部件,它通过调用getDC()并向其绘制HBITMAP来直接绘制到Windows设备上下文。我正在绘制的小部件位于滚动小部件内。我已经实现了paintEvent(),它看起来确实在绘画,但在绘画之后,小部件立即再次被涂上了空白的灰色。我试过设置WA_PaintOnScreen和Qt::WA_NoSystemBackground但这些都没有帮助。理论上这应该是可能的,因为这基本上就是GLWidget的工作方式。我错过了什么? 最佳答案 在这里找到答案:http://www.qtchina.net/qt4c++gui

c++ - RegSetValueEx 线程安全吗?

我怀疑RegSetValueEx是线程安全的,但希望得到社区的一些确认。如果多线程调用,会不会有副作用?RegSetValueExMSDNdocumentation根本没有提到线程安全。 最佳答案 相关Q:IstheWin32Registry‘threadsafe’? 关于c++-RegSetValueEx线程安全吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2847488

c++ - 多线程 Win32 C++ 程序在多线程中使用 try/catch 时崩溃

我正在编写一个多线程程序,它会在抛出特定异常时崩溃。剥离了越来越多的代码来查找问题后,我现在只剩下一个极其简单的案例,它会导致许多不同的崩溃之一,似乎是随机的。我不知道为什么要这样做。程序的全部内容如下:#includeWINAPIDWORDthreadFunc(LPVOIDx){while(true){try{throw1;}catch(...){}}return0;}intmain(intargc,char*argv[]){CreateThread(NULL,0,threadFunc,NULL,0,NULL);CreateThread(NULL,0,threadFunc,NULL,

windows - 运行非线程安全 Dll 的多个 'instances'?

我有一个dll的源代码还不是线程安全的。dll相当复杂,需要相当长的时间才能使其线程安全。所以我想出了独立运行Dll的几个“副本”的想法。最简单的方法可能是创建N个重命名的Dll副本并为每个线程加载一个单独的Dll。这是可行的解决方案吗?有没有更好的类似方法?是否可能存在一些包装代码?我知道这根本不是一个好的工程解决方案。请不要怪我。但它可能会解决许多问题。编辑2017我已经做到了,而且没有任何问题。伟大的!但请注意以下几点:http://msdn.microsoft.com/en-us/library/2s9wt68x%28v=vs.80%29.aspx如果DLL将任何非本地数据或对

Python:进程/线程监控

目前我可以用一个简单的python脚本列出我的进程:导入操作系统os.system("任务列表")我想列出与这些进程关联的所有线程(如果有的话)。每个进程的线程数可能就足够了。谁能告诉我在哪里可以找到这些信息。谢谢。 最佳答案 您可以使用psutil模块(downloadhere)用于跨平台过程信息传递。安装后,使用以下代码获取任意进程id的线程数。importpsutilforprocinpsutil.process_iter():printproc.name+'['+str(proc.get_num_threads())+'th

c++ - Qt - 记住最后检查的单选按钮

我有3个单选按钮和一个旋转框。每个单选按钮应该分别将旋转框值更改为英寸、英尺或米。我该怎么做?我必须知道最后激活的是哪个单选按钮,对吗?有人可以给我一些示例代码吗? 最佳答案 单选按钮和复选框将它们的状态保存为值,并将其公开给您的用户。您可以调用isChecked()了解您的成员变量单选按钮的状态。有点像voidsome_button_hit(boolchecked){if(inches.isChecked()){...}elseif(feet.isChecked()){...}elseif(meters.isChecked()){

windows - 程序完成执行后的线程状态

主线程执行完毕后,内部线程会发生什么?例如:程序1创建5个线程在后台运行。程序1崩溃。这些线程还活着吗?他们会因为线程绑定(bind)在进程上下文中而被杀死吗? 最佳答案 所有这些资源都链接到流程数据结构。当进程终止时,Windows确保清理所有资源。没有设法找到对文档的引用[请随意添加一些,我确信我在M.Russinovich的“WindowsInternals”一书中读到了这篇文章],但这里有几个关于内存释放的类似答案。线程清理是进程终止时Windows调用的清理例程的一部分。https://stackoverflow.com/