草庐IT

QT多线程

全部标签

windows - 从 Mac OSX 将 Qt 项目部署到 Windows

我正在使用MACOSXSnowLeopard,我想将我的项目部署到Windows上这是一个Qt桌面应用程序如何生成.exe文件(+其他依赖项,如果有的话)任何将所有.exe+dll打包成一个包进行安装的方法注意:我宁愿不在windows上安装QtSDK,把项目文件复制到里面然后build。如果您回答了1和2个问题,则需要1个或更好的解决方案 最佳答案 第一步相对容易。转到此处http://crossgcc.rts-software.org/doku.php并获取预编译的MinGW包(或者如果需要生成64位可执行文件,则在source

windows - 在 OSX 上使用 Qt 保持领先地位

使用Qt4.8,我想将我的框架设置为“保持在顶部”。Qt方式并不完美,因为它需要重新创建涉及丑陋闪烁的窗口。在Win32下,存在一个native方法:SetWindowPos(winId(),,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);但是我必须在OS-X下使用什么代码? 最佳答案 这是我用来在Linux、Mac和Windows上设置窗口最顶层的代码:setWindowFlags(#ifdefQ_OS_MACQt::SubWindow|#elseQt::Tool|#endifQt::

.net - 线程是否可以在临界区中间被抢占?

是否可以通过在Windows中禁用中断来实现临界区锁定?如果是这种情况,则当线程处于临界区中间时,它不能被抢占。但如果是这种情况,即如果一个线程在执行关键部分时不能被抢占,那将使得脉冲监视器的整个点不如如果即使线程处于关键部分的中间,也可能会要求线程撤出CPU。所以,我真正的问题是:在Windows中如何实现监视器?线程处于临界区中间时是否可以被抢占? 最佳答案 Windows的设计使得线程,即使在内核模式下运行,arealwayspreemptibleandalwaysinterruptible.所以临界区肯定不是通过禁止中断来实

c++ - 使用 Windows api 和 C++,我如何从硬盘驱动器加载一个 exe 并在它自己的线程中运行它?

为了学习,我正在尝试做操作系统在启动程序时所做的事情,即。解析一个PE文件并给它一个执行线程。如果我有两个exe,一个叫foo.exe,另一个叫bar.exe,我如何让foo.exe将bar.exe的内容加载到内存中,然后让它在自己的线程中从那里执行?我知道如何使用MapViewOfFile或通过简单地将硬盘驱动器上的内容加载到缓冲区中来将其放入内存。我假设只是将磁盘上bar.exe的内容复制到它自己的挂起线程中并运行它是行不通的。我对PE文件的内部结构比较熟悉。当然,非常感谢所有帮助:) 最佳答案 首先,兰伯特是正确的。EXE在它

c - 当进程被终止时,有没有办法让线程从无限信号量等待中出来?

操作系统:Windows。语言:C我有一个线程通过TCP向服务器发送请求并在信号量上无限等待响应。还有另一个线程读取套接字,将接收到的数据复制到一个公共(public)缓冲区中,并使信号量发出脉冲以结束等待。这一切都很好。但在进程由于某种原因被终止的情况下,等待信号量的线程会一直等待,而其他线程将终止。为什么当进程被杀死时线程等待信号量没有结束?我在Linux论坛上读到有SEM_UNDO可以帮助解决这种情况。Windows上有类似的东西吗?任何解决方法? 最佳答案 Semaphoresdonothaveowners.如果您等待信号量

c# - 获取线程的可见窗口的标题

我想知道我将如何去做这件事,因为我已经尝试了无数不同的user32函数并在网上进行了相当广泛的研究,但不幸的是我还没有想出一个解决方案。有一个应用程序有5个线程。只要进程的PID,就可以通过.NETProcess类的GetProcessById方法轻松访问这些线程。但是,似乎没有可用于提供线程ID并枚举其窗口(父窗口或子窗口)的函数。其中一个线程共有10个窗口,其中9个隐藏,1个可见。该可见线程的标题是我试图以编程方式获得的。我最近的方法是获取进程句柄,将其放入EnumChildWindows,并尝试以这种方式将每个窗口句柄添加到一个集合中,但我的集合始终是空的。这是我在Process

windows - 线程 ID 是否总是适合四位十进制数?

我正在将日志语句写入文件,并希望在每一行前加上生成该语句的线程ID。似乎GetCurrentThreadId函数总是返回一个GetCurrentThreadId返回一个DWORD值,它显然可以包含大数字。谢谢。 最佳答案 GetCurrentThreadID的MSDN页面说:thethreadidentifieruniquelyidentifiesthethreadthroughoutthesystem.因此,线程ID在整个系统中都是唯一的,而不仅仅是您的进程,很有可能在某个时候返回一个大于4位十进制数的值。

c++ - 来自目标线程的 PostThreadMessage

今天,我看到了这样一段代码:voidFoo(){MyMsgStructmyMsg;/*omissionforsimplicity*//*sendtoupdatethread*/PostThreadMessage(myThreadId,myMessage,(WPARAM)myMsg,NULL);}当从与myThreadId相同的线程调用Foo()时会发生什么,即从应该是目标线程的相同线程调用?是性能问题还是只是糟糕的代码编写或两者兼而有之?我相信它可能会影响性能,因为我相信它会将消息排队到线程的队列中,而不是仅仅做它应该做的事情,因此会稍微减慢程序速度。线程安全不是我关心的问题对于这个问

windows - 如何在 Delphi 的多线程中加载一个 DLL?

也许我错过了什么,我不知道这里发生了什么。我正在尝试在TThread对象的多个实例中加载同一个DLL。这是我的DLL代码:libraryMyCalcFor32;usesSysUtils,Classes,uRunnerin'uRunner.pas';ExportsEVal;{$R*.res}beginend.这是uRunner.pas:unituRunner;interfaceusesSysUtils,Classes;functionEVal(Valor:WideString):WideString;stdcall;export;implementationfunctionEVal(Va

c++ - 在 Qt 中显示控制台

我想为我的应用程序添加一个控制台,这是我的问题。在QtCreator中,我创建了一个新项目,我选择“QtConsoleApplication”,将其从使用QCoreApplication转换为QApplication,添加coreguiwidgets到项目文件中的QT配置标志,它可以工作。我可以在拥有控制台窗口的同时创建窗口。所以项目文件看起来像这样......QT+=coreguiwidgetsTARGET=ConsoleAppCONFIG+=consoleCONFIG-=app_bundleTEMPLATE=app#sources...它工作得很好,我可以用它开发一个完整的GUI应