草庐IT

QT多线程

全部标签

windows - 在 Qt 中一次播放多个声音

我正在尝试使用Qt播放背景音乐和音效。但是,我一次只能播放一种声音。例如:QSound::play("Music.wav");QSound::play("Effect.wav");当此代码运行时(在Windows上),您可以听到Music.wav刚刚开始播放,但随后停止并播放Effect.wav。有没有办法让这两种声音同时播放? 最佳答案 您正在使用静态方法。为每个对象实例化一个QSound对象:QSoundmusic("Music.wav");QSoundeffect("Effect.wav");music.play();effe

windows - Qt Creator 调试

我在3个平台上使用QTCreator来创建独立于平台的软件。但是,我在Windows中遇到完全相同代码的段错误。这听起来还不错,因为我可以使用调试器。除了,无论我设置了多少个断点或设置它们的位置,它们都会被调试器忽略。我100%确定我的控制流正在通过断点但没有中断流。有什么想法吗?怎么会这样? 最佳答案 呸!我在Qt中使用Cmake,但未能设置CMAKE_BUILD_TYPE变量。就是这样! 关于windows-QtCreator调试,我们在StackOverflow上找到一个类似的问题

python - 在 Windows 上测量每个线程的 CPU 时间

我正在为Windows开发一个长时间运行的多线程Python应用程序,我希望进程知道它的每个线程所占用的CPU时间。我可以用os.times()得到整个过程的总时间但我需要知道每个线程的时间。我知道有外部工具,例如SysinternalsProcessExplorer,但我的程序本身需要有这些信息。如果我在Linux上,我会查看/proc文件系统,asdescribedhere.如果我正在编写C代码,我会使用GetThreadTimes调用,asdescribedhere.那么我如何使用Python在Windows上完成此操作? 最佳答案

c++ - 从工作线程调用主线程回调函数

场景:我有一个C++DLL。在这个DLL中,我创建了一个工作线程。在工作线程中,我有一个循环等待用户通过USB硬件设备输入。只有当USB设备上的用户输入满足某些条件时,循环才会结束。另外,我需要将USB设备的用户使用反馈实时反馈到屏幕上。它使用DelphiGUI进行反馈。当用户使用USB设备时,Windows系统会产生一个回调函数。此回调函数写在同一个C++DLL文件中,并作为参数传入USB设备的初始化函数。我在DLL中使用一个全局变量作为标志来确定何时必须退出此循环。我还从DelphiDLL加载这个C++DLL。DelphiDLL->C++DLL反馈显示来自DelphiDLL。基本上

windows - 是否需要在 CPU 上安排等待 Windows 事件的线程从 sleep 中唤醒?

最好用一个例子来描述我的问题:我们通过CreateEvent创建一个Windows事件句柄,manualReset为FALSE。我们创建了4个线程。确保它们都开始运行并等待WaitForSingleObject的上述事件。在主线程中,在for循环中,我们通过SetEvent向该事件发出4次信号。比如:for(inti=0;i我的问题是,我们可以说所有这4个线程一定会从等待此事件中唤醒吗?根据我对WindowsEvent的理解,答案是肯定的。因为当事件被设置时,总是有一个线程在等待它。但是,我在MSDN上读到“设置已设置的事件无效”。由于等待线程可能没有机会在循环中主线程设置事件时运行。

windows - IWebBrowser2 和多线程单元?

我正在开发一个嵌入了WebBrowser控件(IWebBrowser2)的Windows应用程序。如果我将COM单元初始化为单线程,事情看起来不错:CoInitialize(NULL);但是,如果我将其更改为多线程:CoInitializeEx(NULL,COINIT_MULTITHREADED);然后它开始到处失败,返回值为:Anoutgoingcallcannotbemadesincetheapplicationisdispatchinganinput-synchronouscall.来自对IWebBrowser2方法的调用。有人可以告诉我如何解决这个问题吗?我必须使用多线程单元作

windows - Windows 中每个进程/线程的最大互斥数

在Asp.net应用程序中,每个进程/线程的最大互斥数是否有限制?以防万一目标操作系统是:WindowsXPPro、server2003/2008和不久的将来的Windows7。通常网站部署在应用程序池中。 最佳答案 该限制与进程可以拥有的句柄数限制基本相同。这是一个相当大的数字:16,777,216。当然,实际限制要低得多,并且取决于您有多少可用的非分页池,这并没有那么大。如果您担心这个限制,那是您的程序出了问题。请记住,临界区通常会延迟任何内核对象的创建,这意味着如果争用很少,您可以拥有大量内核对象。

windows - Qt4 程序崩溃,除非安装 SDK

我已经编写了一个开源程序,该程序已作为GPL使用Qt4LGPLSDK构建发布。该程序能够在可选的Sqlite3数据库中搜索数据。这就是让我失去理智的原因。我在开发机器上编译程序。当我尝试运行它时,我会出现有关缺少DLL的错误。我将这些dll复制到与可执行文件相同的目录中,它现在可以正常工作(mingwm10.dll、libgcc_s_dw2-1.dll、QtCore4.dll、QtSql4.dll、QtGui4.dll),包括数据库搜索。现在,如果我将带有可执行文件和DLL的文件夹复制到一台没有安装SDK的新机器上,它运行良好,直到我尝试搜索。我一点击搜索按钮,就会出现以下错误:Tit

c++ - 如何获取远程(即不在我的进程内)线程的堆栈跟踪?

假设我正在编写一个调试器。如何在Windows系统上构建堆栈跟踪?我不需要列举符号等等;只是堆栈上各种函数调用的地址。我已经有了具有VM_READ访问权限的线程句柄。 最佳答案 比利,DBGHELP.DLL是你的friend。各种usefulfunctions对于那些希望执行调试器之类的事件的人...您可以在其中找到像StackWalk64这样的好东西和其他允许您指定要操作的目标进程的程序。当然,您可能需要确保您的调试器进程本身已被授予SeDebugPrivilege。玩得开心! 关于c

windows - 查找另一个线程的线程信息 block

有没有办法找到您的进程中运行的另一个线程的线程信息block(TIB)?我需要为另一个线程构造一个异常处理程序,但我不能在线程本身中完成它。因此我需要找到它的TIB并从另一个线程中构建它。我怎样才能做到这一点? 最佳答案 您可以直接从FS寄存器访问TIB的地址(检查http://www.microsoft.com/msj/archive/S2CE.aspx)。因此,要为另一个线程获取TIB,也许可以使用GetThreadContext()来获取FS的值,从而获取TIB的地址?(只是猜测,我没试过!)