我正在创建许多QWebViews,每个都创建QThreads。问题是我的堆栈空间不足以创建更多线程。因此,我想知道是否有办法清理现有的线程。要清楚,我不是创建这些线程的人:Qt在我展示QWebView时创建线程。
大多数线程(大约400/500)具有完全相同的堆栈:
0 ntdll!RtlEnableEarlyCriticalSectionEventCreation C:\Windows\system32\ntdll.dll 0 0x770b013d 1 KERNEL32!GetVolumePathNamesForVolumeNameA C:\Windows\syswow64\kernel32.dll 0 0x766d1a2c 2 USER32!MessageBoxA C:\Windows\syswow64\user32.dll 0 0x74cd086a 3 QEventDispatcherWin32::processEvents qeventdispatcher_win.cpp 831 0x69de3948 4 QEventLoop::processEvents qeventloop.cpp 149 0x69dbf0c5 5 QEventLoop::exec qeventloop.cpp 204 0x69dbf223 6 QThread::exec qthread.cpp 501 0x69cd412b 7 QThread::run qthread.cpp 568 0x69cd4283 8 QThreadPrivate::start qthread_win.cpp 346 0x69cd54d1 9 msvcrt!_itow_s C:\Windows\syswow64\msvcrt.dll 0 0x75401287 10 msvcrt!_endthreadex C:\Windows\syswow64\msvcrt.dll 0 0x75401328 11 KERNEL32!BaseCleanupAppcompatCacheSupport C:\Windows\syswow64\kernel32.dll 0 0x766d339a 12 ntdll!RtlpNtSetValueKey C:\Windows\system32\ntdll.dll 0 0x770c9ef2 13 ntdll!RtlpNtSetValueKey C:\Windows\system32\ntdll.dll 0 0x770c9ec5 14 ?? 0
有没有办法清理它们?
答案 0 :(得分:0)
由于我意识到线程是为NetworkManager分配的,因此我创建了一个全局的NetworkManager实例并将其设置为每个QWebView的NetworkAccessManager。这允许它为所有页面重用相同的线程组,因此不会留下许多线程。