精华内容
下载资源
问答
  • 线程创建CreateThread,线程挂起SuspendThread,线程恢复ResumeThread,线程销毁TerminateThread,都是kernel32的命令,我们自己封装这些线程的命令,就是便于我们理解他们的工作机制。 API源码: .版本 2 ....

    线程创建CreateThread,线程挂起SuspendThread,线程恢复ResumeThread,线程销毁TerminateThread,都是kernel32的命令,我们自己封装这些线程的命令,就是便于我们理解他们的工作机制。

    511遇见(www.511yj.com)

    API源码:

    .版本 2
    
    .DLL命令 恢复线程, 整数型, "kernel32", "ResumeThread", , 恢复线程
        .参数 hThread, 整数型, , 线程的句柄
    
    .DLL命令 销毁线程, 整数型, "kernel32", "TerminateThread", , 销毁线程
        .参数 hThread, 整数型, , 线程的句柄
        .参数 dwExitCode, 整数型, , 退出码0
    
    .DLL命令 创建线程, 整数型, "kernel32", "CreateThread", , 创建线程
        .参数 lpThreadAttributes, 整数型, , 第一个参数表示线程内核对象的安全属性,一般传入NULL表示使用默认设置。0
        .参数 dwStackSize, 整数型, , 第二个参数表示线程栈空间大小。传入0表示使用默认大小(1MB)。0
        .参数 子程序指针, 子程序指针, , 第三个参数表示新线程所执行的线程函数地址,多个线程可以使用同一个函数地址。
        .参数 lpParameter, 整数型, , 第四个参数是传给线程函数的参数。0
        .参数 dwCreationFlags, 整数型, , 第五个参数指定额外的标志来控制线程的创建,为0表示线程创建之后立即就可以进行调度,如果为CREATE_SUSPENDED则表示线程创建后暂停运行,这样它就无法调度,直到调用ResumeThread()。0
        .参数 线程Id, 整数型, , 第六个参数将返回线程的ID号,传入NULL表示不需要返回该线程ID号。
    
    .DLL命令 挂起线程, 整数型, "kernel32", "SuspendThread", , 挂起线程
        .参数 hThread, 整数型, , 线程的句柄
    

    易语言调用源码:

    .版本 2
    .支持库 EThread
    .支持库 spec
    
    .程序集 窗口程序集_启动窗口
    .程序集变量 许可证1, 整数型
    .程序集变量 许可证2, 整数型
    .程序集变量 线程句柄1, 整数型
    .程序集变量 线程句柄2, 整数型
    
    .子程序 _按钮_线程1_被单击
    
    许可证1 = 创建进入许可证 ()
    启动线程 (&子_多线程主程序, 许可证1, 线程句柄1)
    
    .子程序 _按钮_线程2_被单击
    
    许可证2 = 创建进入许可证 ()
    启动线程 (&子_多线程主程序, 许可证2, 线程句柄2)
    
    .子程序 子_多线程主程序
    .参数 许可证, 整数型
    .局部变量 i, 整数型
    
    .计次循环首 (1000, i)
        进入许可区 (许可证)
        .判断开始 (许可证 = 许可证1)
            编辑框1.加入文本 (到文本 (i) + “我是线程1 |” + #换行符)
        .判断 (许可证 = 许可证2)
            编辑框1.加入文本 (“                 #” + 到文本 (i) + “  我是线程2” + #换行符)
        .默认
    
    
        .判断结束
        延迟 (1000)
        处理事件 ()
        退出许可区 (许可证)
    .计次循环尾 ()
    删除进入许可证 (许可证)
    
    
    .子程序 _按钮_挂起线程1_被单击
    
    挂起线程 (线程句柄1)
    
    .子程序 _按钮_挂起线程2_被单击
    
    挂起线程 (线程句柄2)
    
    
    .子程序 _按钮_恢复线程1_被单击
    
    恢复线程 (线程句柄1)
    
    .子程序 _按钮_恢复线程2_被单击
    
    恢复线程 (线程句柄2)
    
    .子程序 _按钮_关闭线程1_被单击
    
    销毁线程 (线程句柄1, 0)
    
    
    .子程序 _按钮_关闭线程2_被单击
    
    
    销毁线程 (线程句柄2, 0)
    
    

    参考原文:第二课易语言大漠多线程API挂起恢复销毁线程

    展开全文
  • 线程销毁用到两个API(GetExitCodeThread)(TerminateThread) 511遇见易语言模块API教程 API 1、GetExitThread 说明 获取一个已中止线程的退出代码 返回值 Long,非零表示成功,零表示失败。会设置...

    线程销毁用到两个API(GetExitCodeThread)(TerminateThread)

    511

    511遇见易语言模块API教程

    API

    1、GetExitThread

    511

    说明

    获取一个已中止线程的退出代码

    返回值

    Long,非零表示成功,零表示失败。会设置GetLastError

    参数表

    参数 类型及说明

    hThread Long,想获取退出代码的一个线程的句柄

    lpExitCode Long,用于装载线程退出代码的一个长整数变量。如线程尚未中断,则设为常数STILL_ACTIVE
    -----------------------------

    .版本 2
    
    .DLL命令 GetExitCodeThread, 整数型, "kernel32", "GetExitCodeThread", 公开, _取中止线程退出代码
    .参数 线程句柄, 整数型
    .参数 退出代码, 整数型, 传址

    -----------------------------
    2、TerminateThread

    在线程外终止一个线程,用于强制终止线程。

    参数

    HANDLE hThread:被终止的线程的句柄,为CWinThread指针。

    DWORD dwExitCode:退出码。

    返回值

    函数执行成功则返回非零值,执行失败返回0。调用getlasterror获得返回的值。

    511
    3、封装说明

    TerminateThread(hThread,dwExitCode)

    这个API中,参数 dwExitCode, 是一个线程退出代码,这个代码是你可以自动定义的的一整数,你喜欢设定什么整数都可以,如,123,456,0,789,任何数
    这个参数的作用,就是你在调用这个API终止一个外部线程时,给这个被终止的外部线程做一个退出标志,
    然后当你调用另一个API GetExitCodeThread(hThread,dwExitCode)时,就可以获取到那个被你终止的线程,当时设置的dwExitCode退出标志代码。

    封装源码

    511

    .版本 2
    
    .子程序 线程_销毁, 逻辑型, 公开, 强制终止正在运行的线程,成功返回真,失败返回假
    .参数 线程句柄, 整数型, , 创建线程返回的句柄
    .局部变量 lpExitCode, 整数型, , , 装载线程退出代码的一个长整数变量
    
    GetExitCodeThread (线程句柄, lpExitCode)
    返回 (TerminateThread (线程句柄, lpExitCode))

    参考:易语言模块API制作系列视频教程

              易语言模块API视频教程线程销毁(TerminateThread)

    展开全文
  • Qt中关于Qfuture线程销毁问题 在这里我遇到一个由于子线程语句错误导致的程序中断问题,我的线程布置为:主线程中启动一个一级子线程,然后一级子线程中套用三个并行二级子线程(目前运行没有发现问题,因此我推测...

    Qt中关于Qfuture线程销毁问题

    在这里我遇到一个由于子线程语句错误导致的程序中断问题,我的线程布置为:主线程中启动一个一级子线程,然后一级子线程中套用三个并行二级子线程(目前运行没有发现问题,因此我推测对于Qfuture来说,线程是可以套用的,网上实在查找不到这方面的知识),主线程需要等待一级子线程结束后再循环开启新的一级子线程,然后如此循环下去。一级子线程中出错导致主线程等待一个被销毁的线程,所以整个程序崩溃。

    这是我整个问题的示意图
    在这里插入图片描述
    前面说了我的主线程需要等待一级子线程的结束,我第一次采取的方式为使用QfutureWatcher来监视线程,线程完成后再开启新的一级子线程(Qfuture结束后自动销毁),这里由于子线程遇到语句错误被强制销毁,导致watcher认为子线程是正常结束后自动销毁的,于是触发槽函数开启了新的一级子线程,导致整个程序时序混乱,进而程序崩溃掉。

    我第二次采取的方式为使用waitforfinished来等待,又会出现线程在等待过程中被销毁的现象,这在Qt中同样是不允许的,也会导致程序崩溃。(但在此处得到了启发,因为网上很多少人说Qfuture线程是不可以主动被取消的,但是他却有cancel方法,这里设想的通过下述流程不就可以测试出用cancel到底是否可以主动强制销毁Qfuture了嘛)
    在这里插入图片描述
    问题的解决很简单(将语句错误修正即可),但调试过程中踩了很多坑,因为网上对于Qt的资料实在是少之又少,所以分享出来大家一起讨论,如有错误还请各位批评指正

    本文原创,如有转载请注明出处。

    展开全文
  • Android线程销毁

    千次阅读 2016-03-22 14:41:35
    Hanlder是线程与Activity通信的桥梁,利用handler接收到任务线程,放到任务队列里面派对执行。//调用该任务线程的run() 方法执行任务线程。...//移除handler里的任务线程,调用线程的stop()方法,销毁线程。handler.remov

    Hanlder是线程与Activity通信的桥梁,利用handler接收到任务线程,放到任务队列里面派对执行。

    //调用该任务线程的run() 方法执行任务线程。

    Handler updateBarHandler =new handler();
    handler.post(Runnable Thread);

    //移除handler里的任务线程,调用线程的stop()方法,销毁线程。

    handler.removecallbacks(Runnable Thread);

    一个简单的例子如下:

    import Android.app.Activity; 
    import Android.os.Bundle; 
    import Android.os.Handler; 
    import Android.util.Log; 
    public class HandlerThread extends Activity { 
        private static final String TAG = "HandlerThread"; 
        private Handler mHandler =  new Handler(); 
    
        private Runnable mRunnable = new Runnable() { 
            public void run() { 
                Log.e(TAG, Thread.currentThread().getName() + "Thread run");         
            } 
    
        }; 
        @Override
        public void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.main);  
            //通过Handler启动线程 
            mHandler.post(mRunnable); 
        } 
    
        @Override
        protected void onDestroy() { 
            //将线程销毁掉 
            mHandler.removeCallbacks(mRunnable); 
            super.onDestroy(); 
        } 
    }
    
    展开全文
  • C/C++ 线程销毁问题

    千次阅读 2020-01-14 12:20:21
    C/C++使用pthread_create创建线程后需要销毁,不销毁会导致内存泄露。 使用pthread_join销毁。因要等待线程执行完所以会导致主线程阻塞。 使用pthread_detach(pthread_self()),在线程执行完后会自动销毁。注意在...
  • 线程池详解---线程复用、线程销毁

    千次阅读 2019-10-05 16:27:46
    // 2)超过核心线程数的线程可以从HashSet移除,以实现线程销毁 // 接下来看看addThread(firstTask)做了些什么 t = addThread ( firstTask ) ; } finally { mainLock . unlock ( )...
  • 特别是,Linux线程销毁和进程也不一样,即使主函数结束,如果不主动回收,线程空间也不会被释放。类似于永远不能被回收的僵尸进程,我们姑且叫这种线程为僵尸线程吧。本文就是介绍回收这种僵尸线程的资源的两种...
  • 之前,楼主一直在想,这么多模块,特别是易语言多线程销毁的模块有: 精易模块  线程_销毁()  关闭线程句柄 () CloseHandle () 挑这三个来讲吧! a.  线程_销毁(句柄)  可以测试一下: ...
  • 线程资源销毁

    2019-09-26 19:56:19
    线程销毁,线程的资源没有立即释放,只有在主进程销毁的时候才释放。怎么将不用的线程资源销毁,有下面的两种方法: 线程分为可结合的(joinable)和 分离的(detached)两种,如果没有在创建线程时设置线程的属性...
  • Android线程销毁

    2014-08-08 22:57:21
    在Android开发中,经常会用到线程和Timer,如果没有主动关闭它们,当程序结束时,线程并没有被销毁,而是一直在后台运行着,当我们重新启动应用时,又会重新启动一个线程,周而复始,你启动应用次数越多,开启的线程...
  • Thread:销毁线程的三种方式

    千次阅读 2020-11-25 22:29:42
    销毁线程 销毁线程,其实就是终止线程任务的执行,我们更希望这种终止操作是人为可控的,也就是主动退出,这样我们可以执行在退出时需要的一些列操作,保证程序的安全,否则可能会引发一些问题甚至是灾难 销毁线程的...
  • 3.还有我们为何通过设置allowCoreThreadTimeOut(true) 就能使核心线程销毁的呢? 答案: 1.线程阻塞 2.和那个关系不大 3.可以的 有兴趣的话,可以看看下面的源码分析: 从 exexute 方法开始: public void ex...
  • Android 线程销毁

    千次阅读 2018-08-11 20:35:06
    Android 线程销毁  (2011-10-30 09:52:17) 转载▼   分类: Android_SDK 在Android开发中,经常会用到线程和Timer,如果没有主动关闭它们,当程序结束时,线程并没有被销毁,而是一直在后台运行着,当...
  • 线程的初始化和销毁 什么是线程的分离 线程分离函数 线程的初始化和销毁回想一下线程的创建pthread_create的时候,第二个参数是pthread_attr_t,那么这个参数类型代表的是什么??attr是特征特性的缩写,所以这个参数...
  • 众所周知Hanlder是线程与Activity通信的桥梁,我们在开发好多应用中会用到线程,有些人处理不当,会导致当程序结束时,线程并没有被销毁,而是一直在后台运行着,当我们重新启动应用时,又会重新启动一个线程,...
  • 封装多线程模块-api-线程的挂起和恢复销毁 强制杀死或挂起线程会导致线程正在获取的锁资源无法释放;如果正在操作一块公共内存,可能会导致公共内存被破坏。一、SuspendThread 在实际环境中,调用SuspendThread时...
  • 主要介绍了Python线程之定位与销毁的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • android有关线程销毁问题

    千次阅读 2014-01-03 21:47:49
    一、众所周知Hanlder是线程与Activity通信的桥梁,我们在开发好多应用中会用到线程,有些人处理不当,会导致当程序结束时,线程并没有被销毁,而是一直在后台运行着,当我们重新启动应用时,又会重新启动一个线程,...
  • 在Android开发中,经常会用到线程和Timer,如果没有主动关闭它们,当程序结束时,线程并没有被销毁,而是一直在后台运行着,当我们重新启动应用时,又会重新启动一个线程,周而复始,你启动应用次数越多,开启的线程...
  • 线程的创建和销毁。在vc 2005环境下实现的 简单的线程的创建 显示 和停止 销毁
  • 有关【线程销毁的理解

    千次阅读 2016-06-03 13:24:51
    如果不关闭线程线程会继续开着,那要看这个线程里面有没有持有跟这个Activity相关的实例 ,如果有activity不会被销毁 只是不可见而已 ,造成【内存泄露问题】 因为线程只有所有任务执行完毕才会关闭。。。。。...
  • linux内核线程创建销毁机制

    千次阅读 2018-02-23 17:09:27
    这个话题乍一听貌似比较大,其实线程创建本身就是一件很平常的事情。 下面将要介绍的是,新版linux中创建内核线程的机制做了一些变化(其实本质没变,最终还是调用do_fork()来实现),和控制线程的时候需要注意的地方...
  • 线程池的核心线程销毁吗?

    千次阅读 2020-09-18 11:34:31
    今天跟别人讨论了线程池的核心线程会不会销毁的问题 先上代码 public static void main(String[] args) throws InterruptedException { ThreadPoolExecutor pool = new ThreadPoolExecutor(4,10,5, TimeUnit....
  • 内核线程创建与销毁

    2013-08-06 10:56:53
    查看内核线程的方法:ps -aux 可以查看系统中的所有线程,其中带有[ ]的表示是内核线程。 内核线程创建方法: thread = kthread_create(taskq_thread, tqt, "%s/%d", name, i)...内核线程销毁函数如下: kthr
  • 自己开的线程并不会自动随Activity的destroy而关闭,所以必须手动去关闭自己开的线程或者通过boolean的方式让自己开的线程结束运行。自己开的线程有for循环的要更加注意。 转载于:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 225,294
精华内容 90,117
关键字:

线程销毁