我正在编写一个QT应用程序,所有东西都可以构建和工作,但是当我关闭运行线程的应用程序时,应用程序会关闭并显示一条消息:运行时错误.
应用程序输出显示:
QThread: Destroyed while thread is still running
The program has unexpectedly finished.
The process was ended forcefully.
example crashed.
如何解决这个问题?
示例:
main.cpp
#include "mainwindow.h"
#include <QApplication>
在linux中,无论主线程是通过函数exit()还是从main返回,只要主线程终止,整个进程就会退出。如果主线程从main()返回,它将返回到名为crt.o或类似的"C运行时“。在crt.o中,其c代码如下: exit( main (argc,argv));exit()将由主线程调用
最终,所有的线程都会终止。
我的想法看起来对吗?
如果crt.o中的exit()被一个线程终止函数替换,比如void thread_exit(int),它只能终止处于退出状态的线程,crt.o的c源代码看起来像thread_exit( main (argc,argv)),那么当主线程终止时,其他线程还会运
我将尝试复制以下在有效Java(第二版)中提到的代码。属于第10章并发项66。
public class StopThread {
private static boolean stopRequested;
public static void main(String args[]) {
Thread backgroudThread = new Thread(new Runnable(){
public void run() {
int i = 0;
while(!stopReq
我正在分析一个转储,其中一个堆栈显示退出已被调用。
#0 0x00007fe2beac80a4 in __lll_lock_wait () from /lib64/libpthread.so.0
#1 0x00007fe2beac3444 in _L_lock_1087 () from /lib64/libpthread.so.0
#2 0x00007fe2beac32b6 in pthread_mutex_lock () from /lib64/libpthread.so.0
#3 0x00007fe2bece5325 in _dl_fini () from /lib64/ld-li
我在Visual studio C++中做了一些多线程编程,使用了beginthreadex,endthreadex调用。
我创建了一个子线程thread1。子线程运行在一个永远不会退出的函数上,因为它有一个无限循环。现在,如果父线程因错误而终止或成功完成,子线程是否也会退出?我的疑问是--是否存在子线程即使在主程序退出后仍处于活动状态的情况?
对于linux,这种情况应该是怎样的呢?
我需要知道,在Delphi7中使用线程(TThread)时,如果我强行杀死进程,线程是terminated还是会继续运行?
我的execute过程如下所示,如果线程终止,那么它将停止。但是,如果线程从未正式终止呢?
procedure TJDApplicationThread.Execute;
var
ST: Integer;
begin
ST:= 5;
fStop:= False;
while (not Terminated) and (not fStop) do begin
//----- BEGIN -----
Synchronize(DoSync);
我正在创建一个TFTP服务器,并使用无限循环使其保持运行。当我试图发送一个杀死信号时
/bin/kill -s SIGINT <pid>
我希望Java进程关闭TFTP服务器并退出。
class TFTP {
public void startTFTP(String str, String str1){
try {
//Start TFTP server
// Both of below are not working.
Runtime.getRuntime().addShutdownHook(new Thre