草庐IT

QT多线程

全部标签

windows - x64 允许每个 block 的线程数少于 Win32?

当我执行一些cuda内核时,我注意到对于我自己的许多cuda内核,x64构建会导致失败,而Win32不会。我很困惑,因为cuda源代码是相同的,而且构建很好。就在x64执行时,它说它需要太多资源来启动。但是x64在概念上不应该比Win32允许更多的资源吗?如果可能的话,我通常喜欢每个block使用1024个线程。因此,为了使x64代码工作,我必须将block缩小到256。有人知道吗? 最佳答案 是的,这是可能的。大概您正在谈论的问题是registers-per-threadissue.在32位模式下,所有指针都是32位的,只需要一个

使用 tkinter 的 Python 多线程

我正在尝试构建一个有点像个人助理的TkinterGUI,但是我遇到了第一个障碍:(当我更新GUI并使用speech_recognition收听时,它卡住并说没有响应!我了解我需要使用多线程,但我仍然不知道如何使用它!这是我的代码和我使用多线程的失败尝试。importtkinterastkfromsubprocessimportcallassayimportwinsoundimportspeech_recognitionassrimportthreadingdefcbc(tex):returnlambda:callback(tex)defcallback(tex):button="Lis

windows - 实现多线程时,批处理文件中的 ".lock"有什么用?

这是代码。由于我是批处理脚本的新手,我无法理解为什么使用.lock以及为什么它小于等于9。set"lock=%temp%\wait%random%.lock"start""cmd/c9>="%lock%1"abcd.bat4441%tempdate%start""cmd/c9>="%lock%2"pqrs.bat4442%tempdate%for%%Nin(123456789)do(9>="%lock%%%N"||goto:Wait)2>nul 最佳答案 9>不是比较表达式,它是输出流9的重定向。语法9>=是无意义的,因为=在这里没

c++ - Qt Widget应用程序 "Library not registered"错误

我最近刚开始使用Qt并创建了一个简单的QtWidgets应用程序。当我构建并运行应用程序时(即使我创建了一个没有新代码的新项目),我收到以下错误消息:mincore\com\oleaut32\dispatch\ups.cpp(2128)\OLEAUT32.dll!74445072:(caller:7444FE4F)ReturnHr(1)tid(188)8002801DLibrarynotregistered.mincore\com\oleaut32\dispatch\ups.cpp(2128)\OLEAUT32.dll!74445072:(caller:7444FE4F)ReturnH

python - 是否可以在 Python 的线程内生成进程?

我正在编写一个生成进程并在特定条件下重新启动进程的程序。比如子进程不再给母进程发送数据,一段时间后,我想让母进程终止子进程,重新启动。我以为我可以使用线程从子进程接收数据并重新启动子进程,但它并不像我想的那样工作。importnumpyasnpimportmultiprocessingasmpimportthreadingimporttimefromapscheduler.schedulers.backgroundimportBackgroundSchedulerpipe_in,pipe_out=mp.Pipe()classMother():def__init__(self):self

c++ - 静态链接MSVC库,动态链接Qt

我正在部署我用Qt构建的东西,它是动态链接的,因为LGPL。我使用windeployqt.exe收集必要的dll,它在Windows10机器上运行良好。当我在Windows7机器上尝试时,出现了这个错误:Theprogramcan'tstartbecauseMSVCP140.dllismissingfromyourcomputer.经过一番研究,发现MSVCP140.dll是VisualStudio安装的System32中的一个dll。我应该让我的客户安装VisualStudio,这对我来说不是一个选项,或者静态链接它。我尝试使用/MT但我得到了:Overriding/MTwith/M

c++ - 发送消息到不同的线程

是否有任何API可以向线程发送消息?基本上我只有threadId可用,我想向该线程发送自定义消息。 最佳答案 PostThreadMessage。虽然不是很可靠。查看旧新事物博客here和here有关原因的详细信息。基本上模态消息循环把整个想法搞得一团糟。由于发布到线程的消息没有窗口句柄,因此调用DispatchMessage将丢弃该消息。您运行的任何模态循环(直接或间接)都会调用DispatchMessage,因此大部分时间此策略都会失败并且您的消息会消失在以太中。 关于c++-发送消

windows - 线程起始地址

如何使用以下信息确定方法中的确切位置:"abcd.dll!CMyclass::CMymethod+0x45"其实这是一个线程的起始地址,我借助进程监控工具得到了这个字符串作为线程的起始地址。谢谢。 最佳答案 附加调试器,转到CMyclass::CMymethod的入口点,切换到反汇编View,向下移动69字节(=0x45)。 关于windows-线程起始地址,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

windows - 将 Bonjour (dns_sd.h) 库添加到 Windows 中的 Qt

我一直在尝试正确添加Apple提供的开源dns_sd.h库。我正在编写一个使用BonjourRegistrar类的程序,如下所示:linktext我已经在Mac环境下编写了我的程序,现在我正在尝试将它移植到Windows。BonjourSDK带有几个类,我很困惑如何正确地将类添加到我的Qt项目中。我试过添加行:win32:LIBS+=c:\dnsssd.lib在.pro文件中没有成功。此外,我尝试将dns_sd.h和dns_sd.c文件添加到我的项目中,但出现了一些错误,例如:'UINT8':没有命名类型'INT8':没有命名类型'UINT16'没有命名类型'INT16'没有命名类型最

c++ - 在多个线程之间安全地共享一个结构

在Windows/C++下,如果我有一个结构:structListItem{ListItem*next;ListItem*prev;...}连同在主进程和几个动态加载的DLL中运行的多个线程,并且所有这些线程都需要共享上述结构,我如何阻止它们互相踩踏?像这样的东西:ListItem*list=...Alist->next=...B我应该在A和B处放置什么以防止一次运行list->next=...的线程不超过一个? 最佳答案 主要有两种方式。一种可能是最简单的方法是简单地向每个线程发送它自己的数据结构拷贝。这样您就不必使用同步来保护数