主线程退出时,各子线程是否会强制退出 [问题点数:50分,结帖人wushuchuan]

Bbs1
本版专家分:0
结帖率 100%
Bbs1
本版专家分:5
Bbs8
本版专家分:46000
Blank
黄花 2018年10月 C/C++大版内专家分月排行榜第二
2018年6月 C/C++大版内专家分月排行榜第二
2018年1月 C/C++大版内专家分月排行榜第二
2017年12月 C/C++大版内专家分月排行榜第二
2017年8月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2018年5月 C/C++大版内专家分月排行榜第三
2018年4月 C/C++大版内专家分月排行榜第三
2018年3月 C/C++大版内专家分月排行榜第三
2018年2月 C/C++大版内专家分月排行榜第三
2017年11月 C/C++大版内专家分月排行榜第三
2017年10月 C/C++大版内专家分月排行榜第三
2017年9月 C/C++大版内专家分月排行榜第三
2017年6月 C/C++大版内专家分月排行榜第三
2017年5月 C/C++大版内专家分月排行榜第三
2017年4月 C/C++大版内专家分月排行榜第三
2017年3月 C/C++大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs8
本版专家分:46000
Blank
黄花 2018年10月 C/C++大版内专家分月排行榜第二
2018年6月 C/C++大版内专家分月排行榜第二
2018年1月 C/C++大版内专家分月排行榜第二
2017年12月 C/C++大版内专家分月排行榜第二
2017年8月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2018年5月 C/C++大版内专家分月排行榜第三
2018年4月 C/C++大版内专家分月排行榜第三
2018年3月 C/C++大版内专家分月排行榜第三
2018年2月 C/C++大版内专家分月排行榜第三
2017年11月 C/C++大版内专家分月排行榜第三
2017年10月 C/C++大版内专家分月排行榜第三
2017年9月 C/C++大版内专家分月排行榜第三
2017年6月 C/C++大版内专家分月排行榜第三
2017年5月 C/C++大版内专家分月排行榜第三
2017年4月 C/C++大版内专家分月排行榜第三
2017年3月 C/C++大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs8
本版专家分:46000
Blank
黄花 2018年10月 C/C++大版内专家分月排行榜第二
2018年6月 C/C++大版内专家分月排行榜第二
2018年1月 C/C++大版内专家分月排行榜第二
2017年12月 C/C++大版内专家分月排行榜第二
2017年8月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2018年5月 C/C++大版内专家分月排行榜第三
2018年4月 C/C++大版内专家分月排行榜第三
2018年3月 C/C++大版内专家分月排行榜第三
2018年2月 C/C++大版内专家分月排行榜第三
2017年11月 C/C++大版内专家分月排行榜第三
2017年10月 C/C++大版内专家分月排行榜第三
2017年9月 C/C++大版内专家分月排行榜第三
2017年6月 C/C++大版内专家分月排行榜第三
2017年5月 C/C++大版内专家分月排行榜第三
2017年4月 C/C++大版内专家分月排行榜第三
2017年3月 C/C++大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs3
本版专家分:563
Bbs8
本版专家分:46000
Blank
黄花 2018年10月 C/C++大版内专家分月排行榜第二
2018年6月 C/C++大版内专家分月排行榜第二
2018年1月 C/C++大版内专家分月排行榜第二
2017年12月 C/C++大版内专家分月排行榜第二
2017年8月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2018年5月 C/C++大版内专家分月排行榜第三
2018年4月 C/C++大版内专家分月排行榜第三
2018年3月 C/C++大版内专家分月排行榜第三
2018年2月 C/C++大版内专家分月排行榜第三
2017年11月 C/C++大版内专家分月排行榜第三
2017年10月 C/C++大版内专家分月排行榜第三
2017年9月 C/C++大版内专家分月排行榜第三
2017年6月 C/C++大版内专家分月排行榜第三
2017年5月 C/C++大版内专家分月排行榜第三
2017年4月 C/C++大版内专家分月排行榜第三
2017年3月 C/C++大版内专家分月排行榜第三
Bbs3
本版专家分:563
Bbs5
本版专家分:3337
Bbs8
本版专家分:46000
Blank
黄花 2018年10月 C/C++大版内专家分月排行榜第二
2018年6月 C/C++大版内专家分月排行榜第二
2018年1月 C/C++大版内专家分月排行榜第二
2017年12月 C/C++大版内专家分月排行榜第二
2017年8月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2018年5月 C/C++大版内专家分月排行榜第三
2018年4月 C/C++大版内专家分月排行榜第三
2018年3月 C/C++大版内专家分月排行榜第三
2018年2月 C/C++大版内专家分月排行榜第三
2017年11月 C/C++大版内专家分月排行榜第三
2017年10月 C/C++大版内专家分月排行榜第三
2017年9月 C/C++大版内专家分月排行榜第三
2017年6月 C/C++大版内专家分月排行榜第三
2017年5月 C/C++大版内专家分月排行榜第三
2017年4月 C/C++大版内专家分月排行榜第三
2017年3月 C/C++大版内专家分月排行榜第三
Bbs8
本版专家分:46000
Blank
黄花 2018年10月 C/C++大版内专家分月排行榜第二
2018年6月 C/C++大版内专家分月排行榜第二
2018年1月 C/C++大版内专家分月排行榜第二
2017年12月 C/C++大版内专家分月排行榜第二
2017年8月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2018年5月 C/C++大版内专家分月排行榜第三
2018年4月 C/C++大版内专家分月排行榜第三
2018年3月 C/C++大版内专家分月排行榜第三
2018年2月 C/C++大版内专家分月排行榜第三
2017年11月 C/C++大版内专家分月排行榜第三
2017年10月 C/C++大版内专家分月排行榜第三
2017年9月 C/C++大版内专家分月排行榜第三
2017年6月 C/C++大版内专家分月排行榜第三
2017年5月 C/C++大版内专家分月排行榜第三
2017年4月 C/C++大版内专家分月排行榜第三
2017年3月 C/C++大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs5
本版专家分:3337
Bbs1
本版专家分:0
Bbs12
本版专家分:374064
Blank
状元 2017年 总版技术专家分年内排行榜第一
Blank
榜眼 2014年 总版技术专家分年内排行榜第二
Blank
探花 2013年 总版技术专家分年内排行榜第三
Blank
进士 2012年 总版技术专家分年内排行榜第七
Bbs1
本版专家分:73
Bbs1
本版专家分:78
其他相关推荐
Application.Exit()结束程序,但线程还在的解决方法。
Application.Exit()结束程序,但线程还在的解决方法。 出现此情况大多原因是使用了多线程编程,或者你所调用的dll使用了多线程。 我们知道,一般情况下的线程执行完指定的任务之后是会关闭了的,但是如果对于一些循环类线程,或者忘记关掉的线程时,这个时候就需要我们手动将之强制关闭。 用以下三个中的一个即可尝试强制关闭线程。 复制内容到剪贴板 代码: Applicat
MFC 主线程等待子线程退出函数
void WaitForThreadExit(void) {  DWORD dwRet;  MSG msg;  int wait_count=4;  int nExitThreadCount=0;  while(1)  {   dwRet = MsgWaitForMultipleObjects(wait_count, hArray, FALSE, INFINITE, QS_ALLI
Linux线程退出方式总结
在编写多线程代码时,经常面临线程安全退出的问题。 一般情况下,选择检查标志位的方式: 在线程的while循环中,执行完例程后,都对标志位进行检查,如果标志位指示继续执行则再次执行例程,如果标志位设置为退出状态,则跳出循环,结束线程的运行。这个标志位需要主线程(或其他线程)设置,设置后,主线程调用pthread_join接口进入休眠(接口参数指定了等待的线程控制指针),子线程退出后,主线程会接收到
TestThread 多线程编程
示例了多线程编程:主线程中启动进度条显示子线程的进度,子线程中进行耗时的计算工作。主线程通过全局的事件对象CEvent通知子线程结束,子线程退出时通过用户自定义消息通知主线程
Android直接强制退出
今天在用android写界面时,想要按返回键直接退出程序,然而加上 System.exit(0); 之后,程序是直接退回到上一界面,而非按我所想的直接退出程序,后来google百度查了一下,发现是忘记在跳转是加上一下代码: finish(); 网上查了一下大致知道原因所在: 当activity动作完成或Activity需要关闭的时候,调用此方法,则系统将最上面的A
线程退出和线程资源回收问题
最近项目中遇到循环8M的内存泄漏问题,排查后发现是由于特殊场景下使子线程异常退出主线程发现子线程退出便再次创建线程,此时未回收退出线程的资源造成了内存泄漏,导致数据库宿主机oom,此问题不仅导致内存泄漏,还会使线程句柄用完导致其他进程无法分配线程的风险。 下面来看看关于线程退出和线程资源回收的有关问题 线程退出有多种方式,如return,pthread_exit,pthread_ca
c++的坑--多线程退出,单例退出
代码说明 有个单例类,有个调用主函数 ,代码主要说明使用多线程时如何正确退出。单例类代码#pragma once #include class AddData { public: static AddData* Instance() { if (!m_pInstance) { m_pInstance = new A
关闭程序后,子线程未正确退出引出的内存泄露问题
内存泄露信息如下:    f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {239} normal block at 0x003AADA8, 46 bytes long.  Data: 7C D9 4F 78 0E 00 00 00 0E 00 00 00 01 00 00 00  f:\rtm\vcto
关于进程和子进程和线程会不会成为僵尸进程的问题
进程在结束的时候,不管是异常退出
主线程退出时(关闭应用程序时)关闭所有线程
在线程定义的时候Thread t = new Thread(functionName);t.IsBackground = true;//设置为后台线程 这样,在结束程序时Application.exit();后台线程自动结束掉,我这样理解的.
提供一个“多线程(或进程)同时退出时判断是哪些线程退出”的方法
多线程退出,判断哪些线程退出
多线程001 - 主线程等待子线程结束
在很多时候,我们期望实现这么一种功能:在主线程中启动一些子线程,等待所有子线程执行结束后,主线程再继续执行。比如:老板分配任务,众多工人开始工作,等所有工人完成工作后,老板进行检查。 解决方法分析: 主线程通过join等待所有子线程完成后,继续执行;主线程知道子线程的数量、未完成子线程数量,主线程等待所有子线程完成后,才继续执行。 通过join实现 第一种方式,可以直接调用Java A
linux下 c中怎么让才能安全关闭线程 和 linux线程退出时执行的程序(线程清理处理程序)简单例子
多线程退出有三种方式: (1)执行完成后隐式退出; (2)由线程本身显示调用pthread_exit 函数退出;     pthread_exit (void * retval) ;  (3)被其他线程用pthread_cance函数终止:     pthread_cance (pthread_t thread) ;  用event来实现。 在子线程中,在循环
pthread 主线程子线程退出关系
我们在一个线程中经常会创建另外的新线程,如果主线程退出,会不会影响它所创建的新线程呢?下面就来讨论一下。1、 主线程等待新线程先结束退出主线程退出。正常执行。 实例代码:#include "apue.h" #include pthread_t ntid;//线程ID void printids(const char *s) { pid_
activity退出,销毁线程
在Android开发中,经常会用到线程和Timer,如果没有主动关闭它们,当程序结束时,线程并没有被销毁,而是一直在后台运行着,当我们重新启动应用时,又会重新启动一个线程,周而复始,你启动应用次数越多,开启的线程数就越多,你的机器就会变得越慢。还会导致意想不到的错误。 1、线程的销毁 Hanlder是线程与Activity通信的桥梁,利用handler接收到任务线程,放到任务队列里面派对执行。
C# 使用Thread多线程,窗体关闭后进程不退出的解决方案
using System; using System.Threading; using System.Windows.Forms; namespace testS {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponen
【线程关闭】主线程子线程的关闭
今天写线程,再网页上找了些关闭线程的栗子,给大家整理一下~~~      多线程程序的开发中,启动了多个线程的程序在关闭的时候却出现了问题,如果程序退出的时候不关闭线程,那么线程就会一直的存在,但是大多启动的线程都是局部变量,不能一一的关闭,如果调用Thread.CurrentThread.Abort()方法关闭主线程的话,就会出现ThreadAbortException 异常,因此这样不行。
python threading中处理主进程和子线程的关系
之前用python的多线程,总是处理不好进程和线程之间的关系。后来发现了join和setDaemon函数,才终于弄明白。下面总结一下。 1.使用join函数后,主进程会在调用join的地方等待子线程结束,然后才接着往下执行。 join使用实例如下: import time import random import threading class worker(threading.T
主线程退出,不代表进程会终止
    核心编程上说的比较清楚,主线程返回了,系统会自动终止其他所有线程,回收资源,从而结束进程。偶尔间我发现.net里面的主线程退出时,只要还有前台线程存活,进程就不会退出。很迷惑其实现原理。查了些资料,了解到,默认情况下,只要进程中还有一个线程存活,进程就不会终止,与存活的线程是不是主线程无关,除非某个线程直接或间接的通过ExitProcess等全局性的API提前结束了进程的执行。这似乎与很多人的观点不同,呵呵。    为了简单明了,看下面代码:DWORD WINAPI OtherThread(LPVO
JVM关闭及线程的退出
JVM关闭及线程的退出 一,关闭方式       JVM的关闭意味着将停止系统中所有的任务,可以由其自动关闭也可以主动触发。下面的几个条件都可以使JVM关闭: 1,所有的非守护都已经运行结束。 2,调用了System.exit方法。 3,杀死JVM进程 4,通过系统平台发送关闭信号(比如按Ctrl+C) 二,关闭钩子    如果我们想在JVM关闭时做
子进程退出时会给父进程发信号吗?
父进程创建一个子进程,那么子进程退出时,会不会告诉父进程它要退出了?其实在子进程退出时,会给父进程发送一个SIGCHLD,17号信号。 那么下面用代码来验证一下: 首先要捕捉SIGCHLD信号,输出 i am %d signal ; 再创建子进程,在子进程中输出 i am child,然后退出; 在父进程中每隔1s输出 i am father。#include #in
【Python笔记】Python多线程进程如何正确响应Ctrl-C以实现优雅退出
相信用C/C++写过服务的同学对通过响应Ctrl-C(信号量SIG_TERM)实现多线程C进程的优雅退出都不会陌生,典型的实现伪码如下:#include int main(int argc, char * argv[]) { // 1. do some init work ... init() ... // 2. install signal handl
MFC主线程安全关闭子线程的方法:使用PostThreadMessage在Win32线程间传递消息
PostThreadMessage的原型是这样的 BOOL PostThreadMessage( DWORD idThread,     UINT Msg,     WPARAM wParam,     LPARAM lParam ); PostThreadMessage可以用于线程之间的异步通讯,因为它不用等待调用者返回, 这也许是线程通讯中最简单的一种方法了。 但是
java 主线程等待子线程结束
第一种方式join/** * Date:2016年9月7日下午7:43:13 * Copyright (c) 2016, www.bwbroad.com All Rights Reserved. * */ package test.join; import test.Task; /** * Description: TODO * Date: 2016年9月7日 下午7:4
父进程异常退出时,确保子进程退出
前言父进程异常退出时,如果子进程未退出,或者对于父进程的退出不知情,将会导致子进程变成孤儿进程,更严重的情况是,如果父进程需要使用端口,而父进程异常退出,父进程再次启动时,会发现其子进程占用其端口。原因是,子进程继承了原来父进程的端口。因此必须保证,父进程异常退出是,子进程也能够退出。如下面的程序,对系统的system函数进行了改写。 bakRun.sh#!/bin/bash declare -i
python中主线程等待子线程完成的实现(join())
无论什么工具 都离不开核心的东西 性能无论是什么工具还是api 都离不开最核心的性能指标 测试人员只有牢牢把控住性能的核心指标 才能确实理解性能这块的测试方法概述(一)中其实已经介绍了几个性能指标了,并且是通过adb的方式读取相关数据,这一篇算是个延伸吧,因为这里要学习的并不是最原始的看的头痛的数据,而是谷歌官方或者第三方封装好的工具,用这些工具,提高测试效率。时延 界面流畅度,其根本是在于代码
Golang 并发的退出
《The Go Programming Language》笔记关闭一个channel,操作channel之后的代码可以立即被执行,并且会产生零值。广播机制:用关闭一个channel来进行广播。创建一个退出channel,不会向这个channel发送任何值。import ( "flag" "fmt" "io/ioutil" "os" "path/filepath
并发问题和主线程等待所有子线程运行完毕再执行
我们对数据库的操作是一个耗时过程,假如我们需要让数据库批量操作完成之后,再跳转到另外一个页面,注意:是批量操作完成之后再跳转。 分析:以上需求我们遇到2个难点, 第一个难点是怎么控制并发问题, 第二个难点是怎么使主线程等待所有子线程完成之后再执行。
MFC 线程的退出方法
A.线程函数的返回(推荐用法)(需要考虑的是catch/运行标志/错误处理等方法) B.ExitThread函数(不推荐) C.同一个进程或者另一个进程中的线程调用TerminateThread函数(应该避免这种方法) D.包含线程的进程终止(应该避免使用这种方法) 线程函数的返回可以确保线程中的C++对象被撤销函数正确的撤销,操作系统正确的释放线程堆栈所使用的内存,系统将线程的退
在应用非正常退出时利用StateSaver来保存我们的数据
我们知道Ubuntu手机平台是一个单任务的系统。一个用户可以开启很多个应用,但是只有前台的应用是可以正在运行的应用。很多被推到后台的应用被驻存到内存中。如果有很多这样的被驻存的应用的话,内存迟早会被用完的。操作系统可以选择一些应用被杀死从而保证系统的正常运行。为了能够保证应用在退出时的状态,在Ubuntu系统上,我们设计了StateSaver这样的一个接口。它可以用来帮我们保存应用在非正常退出的状态,以便在应用重新启动后恢复以前的状态。
线程退出前的资源释放问题
线程退出前的资源释放问题 类似于进程的atexit()函数,线程在退出前也可以执行用户显示定义的一些函数。无论是可预见的线程终止还是异常终止,都会存在资源释放的问题,在不考虑因为运行出错而退出的情况下,如何保证线程终止时能顺利的释放掉自己所占用的资源,特别是锁资源。 资源独占锁的使用: 线程为了访问临界资源而为其加上锁,但在访问过程中被外界取消,如果线程处于响应取消状态,且采用异步方...
终止正在运行的子线程(一、几种方式的介绍)
最近开发的东西有涉及到线程的创建和释放,由于对这一块不是很熟悉,查阅很多资料,现记录如下: 如何正确的终止正在运行的子线程 转自http://www.cnblogs.com/Creator/archive/2012/03/21/2408413.html(略有改动)        最近开发一些东西,线程数非常之多,当用户输入Ctrl+C的情形下,默认的信号处理会把程
QT线程退出
网上有案例如下退出线程 //一般子线程里循环采用 white(nRunFlag) { } //需要结束时,nRunFlag = 0; this->terminate(); 然后就报错 Signal name :  SIGABRT Signal meaning :  Aborted 最后解决: 不用上述方法,直接采用线程对象quit属性
ios 保留子线程退出可以继续执行任务
[self performSelector:@selector(time) onThread:self.thred withObject:nil waitUntilDone:NO];           } -(void)run{          NSLog(@"thred ===============%@",[NSThread currentTh
Java中的main线程是不是最后一个退出的线程
Java中的main线程是不是最后一个退出的线程 个人blog原文地址:http://www.gemoji.me/when_main_thread_end/  之所以写这篇文章,是因为上次被人问到这么一个问题:“在main函数里启动一个定时器,是不是main函数执行完整个程序就退出了,包括那个定时器”。多说无益,直接写个程序测试一下就知道了。  Java代码  
跟老男孩学Linux运维:Shell编程实战
Linux/Unix
【Python面试必看系列】之当退出 Python 时,是否释放全部内存?
Q 10. 当退出 Python 时,是否释放全部内存? 答案是 No。循环引用其它对象或引用自全局命名空间的对象的模块,在 Python 退出时并非完全释放。 另外,也不会释放 C 库保留的内存部分。...
python进程,主线程子线程的关系
      进程是存储数据的空间,而线程是cpu执行的指令。就好比进程是一个房间,线程就是房间中的每一个人。所以每一个进程都必定包含至少一个线程。进程和线程是相对独立的,但又是相互依赖的。当主线程执行完毕后,子线程随即停止。话不多说,直接上代码!!!import threading, time def run(n): print('task start', n) time.slee...
android终止无限循环线程和程序退出时销毁线程
android,启动了一个子线程,这个子线程是一个死循环,不成的打印“Hello”。 现在要实现点击一个Button,让这个子线程终止,用什么方法啊? stop()不起作用,destroy()有异常,Handler貌似也解决不了,因为是一个线程。。。   答案如下: 线程像这样:Thread{    boolean flag = fase;    run(){
android退出应用时候清除数据
退出应用的时候调用下面方法,就可以清楚数据了。 +        ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); +        boolean res = am.clearApplicationUserData(); +        if (!res) { +    
多线程中主线程子线程执行的顺序
在我们刚刚接触多线程时,所练习的Demo可能会达不到我们期待的运行结果,这其实有两种可能: 第一,是巧合,CPU可能是一直执行完一个线程再去执行另一个线程。所以我们看到的结果一直是没有交替执行的。 解决办法是:把运行的次数放大,10次不行就100次,100次不行就1000次,1000次不行5000次,其实1000次的时候也就差不多出现了交替运行。 //线程任务类 public class Th...
Android之Application的onTerminate能监听应用退出吗?
                                        Android之Application的onTerminate能监听应用退出吗? 一些Android开发者在不经意间发现Android的Application中有一个公开的回调方法: onTerminate() 继而想当然的认为该方法即是Android的整个App应用退出后的回调,因为Terminate的词面意思就是...
iOS开发-RunLoop的退出方式
一. 三种启动RunLoop的方式通过[NSRunLoop currentRunLoop]或者CFRunLoopGetCurrent()可以获取当前线程的runloop。 启动一个runloop有以下三种方法:- (void)run; - (void)runUntilDate:(NSDate *)limitDate;- (void)runMode:(NSString *)mode beforeD
VC程序里一种很好的线程退出方式,算是复习Event
直接看程序: //1. 初始化的地方创建“退出事件” HANDLE ExitEvent = ::CreateEvent(NULL,FALSE,FALSE,NULL); //2. 下面是放在一个线程里 while(1) { //不断的检测事件是否触发?否则1ms后超时(相当于Sleep(1)了) DWORD st = ::WaitForSingleObject(ExitEvent, 1);
Python线程---经过了测试,但运行结束后,不退出解释器
# coding=utf-8 # 线程 import time import thread import urllib2 def get_html(url): html = urllib2.urlopen(url).read() return html # 保存网页 def save_html(data,filename): f = file(filename,'wb') f.writ
子线程如何不阻塞主线程
for t in thread_list: # t.setDaemon(True) t.start() t.join() 这样做很方便啊,想开多少个线程就开多少个线程 但是这种情况遇到子线程阻塞的话就会有问题,例如rabbitmq的消费者,启动之后,consumer是一直处于阻塞的状态的,创建多个consumer的话,上...
正确实现子线程任务全部完成后主线程关闭的四种方法
方法一 Thread.sleep 方法二 ExecutorService 方法三 thread.join 方法四 Thread.yield and Thread.activeCount 写代码过程中遇到了这样的场景, 需要观察各个子线程运行的情况, 如果不进行任何处理当main 方法运行完毕后其他子线程都会关闭, 无法观察到所有子线程的详细的运行情况, 于是需要让主线程等待...
Android终止无限循环线程和程序退出时销毁线程
android,启动了一个子线程,这个子线程是一个死循环,不成的打印“Hello”。 现在要实现点击一个Button,让这个子线程终止,用什么方法啊? stop()不起作用,destroy()有异常,Handler貌似也解决不了,因为是一个线程。。。   答案如下: 线程像这样:Thread{    boolean flag = fase;    run(){
如何用通过C++11提供的std::condition_variable实现主线程控制子线程的启动和停止
讲述了如何使用C++ 11的条件变量实现主线程控制子线程任务的开始和停止,减少了启动线程的开销
Linux线程编程 - 线程退出与等待
线程退出 新创建的线程从执行用户定义的函数处开始执行,直到出现以下情况时退出: 调用pthread_exit函数退出。调用pthread_cancel函数取消该线程。创建线程的进程退出或者整个函数结束。其中的一个线程执行了exec类函数执行新的进程。 等待线程 退出线程示例 [cpp] view plai
如何在sh退出时自动执行命令
在C shell中有一个名为.logout的设置文件. 当用户退出时.logout中的命令被执行. 但是Bourne 和Korn shell中都没有退出文件. 可以使用一下方式模拟在用户的.profile加入一行trap '. ~/.sh_logout;exit' 0将退出时想运行的命令放入~/.sh_logout中
C#退出时弹对话框确认退出
private void Form1_FormClosing(object sender, FormClosingEventArgs q)         {             DialogResult dr = MessageBox.Show("      您确定要退出吗?", "退出确认", MessageBoxButtons.YesNo, MessageBoxIcon.Warnin
MFC多线程中主线程阻塞了子线程
这几天在编写飞控地面站软件,在工程中创建了一个子线程专门接收UDP传过来的数据,但我在按钮触发事件中加入了while(1)等子线程中的某一个short型数据变为1,结果始终不为1,如论如何没有收到这个1。最终调试发现,因为这个while(1)造成了接收子线程阻塞了,根本不接收数据了。最终,将按钮触发的事件放在一个新建的子线程中处理,解决了这个问题。这个主线程中while(1)造成子线程阻塞的原因,
主线程子线程、守护线程
import static java.util.concurrent.TimeUnit.*;      public class DaemonTest {          public static void main(String[] args) throws InterruptedException {              Runnable r = new Runnable() 
JAVA 解决主线程等待子线程全部执行结束后再执行的方法
这段时间在项目中遇到了线程的问题,方法体是有返回值的,在方法体内调用了一个线程,最后有数据统计,所以会出现子线程没有执行完成的情况下,主线程就已经走完了,导致数据统计不完整,为了拿到完整的数据,故有以下方法。 监控子线程是否都执行完毕,先看代码截图及注释(写的比较糟,但也不失为一种方法,提供一个思路) 将创建的线程放进自定义的list1中,因为不知道会有多少个线程,所以采用了while循...
Java Thread.join()详解--父线程等待子线程结束后再结束
阅读目录 一、使用方式。二、为什么要用join()方法三、join方法的作用join四、用实例来理解打印结果:打印结果:五、从源码看join()方法 一、使用方式。 join是Thread类的一个方法,启动线程后直接调用,例如: ? 1 Thread t = new AThread(); t.
Unity退出后保存数据,PlayerPrefs 玩家偏好
float x;     float y;     float z;     Vector3 pos;  // Use this for initialization  void Start () {         pos.x = PlayerPrefs.GetFloat("x1");         pos.y = PlayerPrefs.GetFloat("y1");  
c# 退出应用时进程不关闭问题
在写上位机过程中需要写一个UDP持续监听的功能,实现方式选择新建while循环进程的方法。但是调试过程中发现,关闭界面后,线程还在后台持续运行。经查询资料,最终选择Thread的IsBackground属性来实现应用退出时自动结束线程。
强行停止python子线程最佳方案
    子线程强制性终止是我们实际应用时经常需要用到的,然而python官方并没有给出相关的函数来处理这种情况。网上找到一个挺合理的解决方案,这里分享给大家。import threading import time import inspect import ctypes def _async_raise(tid, exctype): """raises the exception,...
Android退出程序时弹出对话框确认退出
public class MainActivity extends AppCompatActivity { Button exitButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...
Android学习-- 销毁activity时注意关闭线程
在Activity开启的子线程并不会自动随Activity的destroy而关闭,所以必须手动去关闭子线程或者通过boolean的方式让子线程结束运行。开启的子线程有for循环的要更加注意。 而且还要注意定时器的关闭,因为定时器就相当于自动开辟了一条线程 这是关闭定时器的程序 public void onDestroy() { // 当结束程序时关掉Timer timer.cancel
C#/.NET主线程子线程之间的关系
一般来说,一个应用程序就对应一个进程,一个进程可有一个或多个线程,只有一个主线程主线程子线程之间的关系 默认情况,在新开启一个子线程的时候,他是前台线程,只有将线程的IsBackground属性设为true;他才是后台线程 当子线程是前台线程,则主线程结束并不影响其他线程的执行,只有所有前台线程都结束,程序结束 当子线程是后台线程,则主线程的结束,会导致子线程的强迫结束 不管是前台
子线程结束后返回值给主线程
public interface Notify{   public void perform(result); } public class MainThread implements Notify{  public synchronized void perform(result){    System.out.print(result);  }   public void
pthread_exit-----在linux主线程中的用途
大家都知道在一个线程中调用pthread_exit表示退出一个线程,并且pthread_exit的参数作为返回值提供给pthread_join函数获取。 那么如果在main函数创建了若干个线程后,在main函数最后调用pthread_exit会怎么样呢?已经创建的线程会不会随着main线程的退出退出呢? 如果在main函数中调用的是exit,那么答案是所有线程随着main线程退出退出。 但
以事件通知线程结束,并等待线程安全退出
有关windows下的线程以及一部通信机制的一些
app退出操作
app退出登录操作
C/C++中退出线程的四种解决方法
退出线程可以有四种方法: 1.线程函数的return返回(最好这样): 其中用线程函数的return返回, 而终止线程是最安全的, 在线程函数return返回后, 会清理函数内申请的类对象, 即调用这些对象的析构函数. 然后会自动调用 _endthreadex()函数来清理 _beginthreadex(...)函数申请的资源(主要是创建的tiddata对象). 2.调用 _endthrea
Android如何执行一个不确定当前处于在子线程还是主线程中的UI操作
Android执行一个不确定当前处于在子线程还是主线程中的UI操作
线程退出的几种方式和资源回收及设置线程属性
from:http://blog.chinaunix.net/uid-29924858-id-4603600.html  线程退出油多种方式,如return,pthread_exit,pthread_cancel等;线程分为可结合的(joinable)和 分离的(detached)两种,如果没有在创建线程时设置线程的属性为PTHREAD_CREATE_DETACHED,则线程默认是可结合的。
主线程等待子线程执行完再结束
主线程子线程1–子线程1的子线程1             |             |-子线程1的子线程2             | &nb
Win32线程——等待另一个线程结束
《Win32多线程程序设计》–Jim Beveridge & Robert Wiener “等待某个什么东西”是线程常常需要做的事。等待是线程的“必要之恶”。 如果你没有等待线程结束就莽撞地结束程序,线程会被系统强制结束掉——在它完成它的工作之前。 由于让线程停工是操作系统的责任,很合理地我们会认为操作系统也有责任让其他线程知道某个线程停工了。 Sleep()这个函数要求操作系统中止
Android应用的正确退出“姿势”
在应用推出时候要关闭所有存活的Activity太能完全退出应用,下面介绍常用的关闭所有Activity的方法。 一、容器法 顾名思义,容器法就是用一个列表记录所有存活的Activity,当应用退出时候循环遍历所有的Activity执行finish()方法。具体实现如下: import java.util.LinkedList; import java.util.List; impo
Unity初始化函数以及退出函数的执行顺序
打印结果: 红色  启动Unity         蓝色 Unity失去焦点 获得焦点  绿色 停止Unity
C++初学者笔记:std::thread,子线程阻塞主线程的问题
C++ 11 支持跨平台线程啦,当然要尝尝鲜 之前用的各平台线程实现方式都不一样,换个平台或者换个库,使用方法就不一样了 编辑了个小例子,本来以为很容易,谁知道也要撞撞墙。
C++11线程学习之等待线程结束
       一旦我们开启了新线程后,就需要决定是要等待这个线程结束还是将其设置为分离状态(自行运行,与父线程没什么关系了)。如果不等待线程运行结束的话,有一个问题我们需要注意:必须确保该线程结束前访问到的数据都是有效的,否则会引发异常或输出一些预料之外的结果。  实例一://-----------main.cpp #include <iostream> #include <th...
线程中慎用exit
在编程过程中,出现 send:Connection reset by
Activity关闭子线程是否随着关闭?
问题:在开发中遇到关闭一个页面(Activity),里面的线程是否随着关闭? 回答:不会(经过测试) 当在开发中遇到需要在activity关闭的时候关闭线程时: 1.可以在线程的Run方法里面设置标记手动关闭. (使用停止的标记位,那么可以保正在真正停止之前完整的运行完) 2.调用Thread.stop()方法也可以,但是会出问题(使用Thread.stop方法停止线程,不能保证这个线程是
iOS 监听APP被强制退出的方法,双击home杀死应用
起初设置的方法为这个- (void)applicationWillTerminate:(UIApplication *)application { // 业务逻辑 }可是通过测试发现,APP退出的时候并不走这个方法 只要添加观察者才会执行这个方法[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(a
android之timer和timertask是否运行在主线程中解答
知识点: 1、timer和timertask是否运行在主线程中?答案是否定的。 下面是在UI线程打印的UI线程ID System.out.println("-=-=-=>>ui...xianchengid00000 = " + Thread.currentThread().getId()); 下面是在timertask的ru
python程序退出策略
python程序退出策略: 其实跟java的jvm退出策略一致,只有在没有用户线程/进程,只有后台线程或进程的时候,才会退出,注意,主线程默认应该是用户线程 在主线程中新建子线程或者子进程默认都是用户线程或者进程,此时如果主线程提前结束,那么必须等待子线程或子进程退出,python程序才会退出。如果在新建子线程/子进程的时候设置成了守护的,那么当主线程结束的时候就会直接退出。 设置守
我们是很有底线的