java线程创建销毁_c++多线程的创建挂起执行与销毁
资源简介
1. 创建一个基于对话框的应用程序。并增加如图所示控件;分别为3个进度条控件关联三个进度条类型的变量;并在对话框的初始化函数中,设定进度条的范围;为编辑框关联一个整型的变量;为12个按钮添加消息处理函数;
2. 定义结构体:用做线程函数的参数传递
typedef struct Threadinfo{
CProgressCtrl *progress;//进度条对象
int speed; //进度条速度
int pos; //进度条位置
} thread,*lpthread;
3. 为对话框增加三个句柄,用于标识各个线程;
HANDLE hThread1; //线程1线程句柄
HANDLE hThread2; //线程2线程句柄
HANDLE hThread3; //线程3线程句柄
在增加三个结构体类型的变量,用做线程函数的参数传递;
HANDLE hThread1; //线程1线程句柄
HANDLE hThread2; //线程2线程句柄
HANDLE hThread3; //线程3线程句柄
4. 新增一个静态的全局变量,用于记录所有线程的状态:static int GlobalVar=10000;
5. 声明并编写线程函数,注意只能有一个参数,且函数的返回值类型也是固定的;函数名可以自定义;
DWORD WINAPI ThreadFun(LPVOID pthread);//线程入口函数
6. 在启动按钮的消息处理函数中编写如下代码:
thread1.progress=&m_progress1;//进度条对象
thread1.speed=100;//速度
thread1.pos=0;//初始位置
hThread1=CreateThread(NULL,0,ThreadFun,&thread1;,0,0);//创建并开始线程
if (!hThread1)
{
MessageBox("创建线程失败");
}
7. 编写线程函数(一般是一个死循环,或者需要花费时间很长的算法!否者就失去了多线程的意义)
DWORD WINAPI ThreadFun(LPVOID pthread) //线程入口函数
{
lpthread temp=(lpthread)pthread;//参数强制转换为结构体类型
temp->progress->SetPos(temp->pos); //设置被传递过来的进度条的位置
while(temp->pos<20)
{
Sleep(temp->speed); /设置速度
temp->pos++; //增加进度
temp->progress->SetPos(temp->pos); //设置进度条的新位置
GlobalVar--;
if(temp->pos==20)
{
temp->pos=0; //进度条满则归0
}
}
return true;
}
8. 在挂起按钮函数中,编写如下代码:
if(SuspendThread(hThread1)==0xFFFFFFFF)
{
MessageBox("挂起失败!进程可能已经死亡或未创建!");
return;
}
9. 在执行按钮函数中,编写如下代码:
if(ResumeThread(hThread1)==0xFFFFFFFF)
{
MessageBox("执行失败!进程可能已经死亡或未创建!");
return;
}
10. 在停止按钮函数中,编写如下代码:
if(TerminateThread(hThread1,0))//前些终止线程
{
CloseHandle(hThread1);//销毁线程句柄
}
else
{
MessageBox("终止进程失败!");
}
11. 为应用程序添加WM_TIMER消息,实时更新全局变量的值到编辑框;
java线程创建销毁_c++多线程的创建挂起执行与销毁相关推荐
- java线程集合点_Java多线程学习笔记(三) 甚欢篇
使人有乍交之欢,不若使其无久处之厌 <小窗幽记>很多时候,我们需要的都不是再多一个线程,我们需要的线程是许多个,我们需要让他们配合.同时我们还有一个愿望就是复用线程,就是将线程当做一个工人 ...
- java 线程面试题_JAVA多线程面试题(一)
1.进程和线程的区别 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和程序的单一进 ...
- java线程代码实现_Java 多线程代码实现讲解
作为一个完全面向对象的语言,Java提供了类 java.lang.Thread 来方便多线程编程,这个类提供了大量的方法来方便我们控制自己的各个线程.那么如何提供给 Java 我们要线程执行的代码呢? ...
- java线程怎么用_Java多线程基本使用
一.概念 1.进程 1.1进程:是一个正在进行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元. 1.2线程:就是进程中一个独立的控制单元,线程在控制着进程的执行,一 ...
- java线程堆栈nid.tid_java多线程死锁 Java问题定位之Java线程堆栈分析(2)
从上面的main线程看,线程堆栈里面的最直观的信息是当前线程的调用上下文,即从哪个函数调用到哪个函数(从下往上看),正执行到哪一类的哪一行,借助这些信息,我们就对当前系统正在做什么一目了然. 另外,从 ...
- Java线程更新ui_android使用多线程更新ui示例分享
Android线程涉及的技术有:Handler;Message;MessageQueue;Looper;HandlerThread. 下面看一段在线程中更新UI的代码: public class Ma ...
- java 线程锁概念_Java多线程——锁概念与锁优化
为了性能与使用的场景,Java实现锁的方式有非常多.而关于锁主要的实现包含synchronized关键字.AQS框架下的锁,其中的实现都离不开以下的策略. 悲观锁与乐观锁 乐观锁.乐观的想法,认为并发 ...
- java线程的任务的三种创建方式,严格地说,就一种,就是如何重写Runnable接口的run()方法
仅简单演示Java中线程任务的三种创建方式 第一种:使用了适配器模式,有返回值,能抛出异常,任务代码写在Callable.call()方法中,Runnable的run方法会通过适配器调用到Callab ...
- java判断线程是否死锁_c++多线程锁 Mutex 自动判断死锁
c++多线程锁可以使用absl::Mutex std::mutex这两种,下面是demo代码. 使用absl:Mutex的时候打印: [mutex.cc : 1338] RAW: Cycle: [m ...
最新文章
- 在B站如何不动一根手指,就可以养成6级大佬?大四学生发明养号神器,看完你也会...
- 获取Json中特定的值
- wxWidgets:容器类
- 《全栈营销之如何制作个人博客》之二:php环境安装及个人博客后台搭建 让你的博客跑起来...
- python判断火车票座位_Python抢票程序优化,可以选择车次和座次
- 【含内推码】字节跳动智能创作2022秋招提前批全面开启!
- (C++) CreateThread
- C语言程序设计:图书管理系统(超详细有登录系统,附代码和实验报告)
- dism 分割镜像_UEFI安装win10 1809系统,拆分Windows 映像大于4G文件install.wim的官方教程(亲测完美)...
- 4775电子书免费链接
- (已更新)娱乐微信小程序源码下载-多玩法安装简单
- 怦然心动(Flipped)-1
- python dbf 修改_Python修改DBF文件指定列
- STM32学习之路——麒麟座V3.2开发板蜂鸣器发声问题
- 《计算机网络 自顶向下方法》(第7版)答案(第三章)(三)
- STM32的串口硬件流控(RS232/RS485)
- 八款流行无线黑客工具,非常实用
- YANG模型中<rpc-error>的定义
- 2021年高考成绩查询襄阳状元,2021年襄阳高考状元是谁分数多少分,历年襄阳高考状元名单...
- 【小技巧】如何向论文原作者索要数据集和源码
热门文章
- 微软企业库mysql分页存储_使用微软企业库,非分页sql语句得到分页数据方法
- 电梯管理php,写字楼物业电梯管理规定
- c++第n小的质数_形形色色的素数 -- 质数定理
- 「雕爷学编程」Arduino动手做(36)——WS2812B 4位彩灯模块
- 静态内部类实现 单例模式
- U3D脚本开发基础(转载)
- Dell Latitude 3490 使用 UEFI+GPT 安装 Win7 x64
- Java基础系列--instanceof关键字
- 剑指Offer——链表中环的入口结点
- 【转】Java魔法堂:String.format详解