黑马程序员-进程与线程的区别与运用

本文深入探讨进程与线程的概念及其关系,并通过实例演示如何使用C#进行进程的显示与管理、线程的创建及控制,包括线程的挂起、恢复与终止。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。

进程线程的关系:
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
(3)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
(4)处理机分给线程,即真正在处理机上运行的是线程。
(5)线程是指进程内的一个执行单元,也是进程内的可调度实体。

进程的运行我们可以通过任务管理器进行查看,当我们结束一个酷狗的进程时,我们可以发现酷狗的窗体关闭了,当我们再一次打开酷狗播放器时,我们又可以在任务管理器上看到进程信息,进程我们可以理解为一个程序的运行,程序的运行又是靠线程来执行的,当我们在酷狗上点击播放,暂停,继续时,这相当于把进程中某个线程给挂起或取消挂起,一个进程一般都需要一个以上的线程,线程的运行就是去执行一些方法去完成某个操作,同时多个线程的运行又是互不影响,就像一个公司做为一个进程,人作为线程完成个个任务,每个人做事都是不好互相影响的,这就造成了进程与线程的关系。

//将所有进程显示出来保存到listview

  private void button1_Click(object sender, EventArgs e)
        {
            /*标题和内容两项是不同的对象,内容是listviewitem对象中完成的,所以清除内容是在listviewl.items中清除的,而不是在    listview1.clear(),这样会清除标题和内容*/
            listView1.Items.Clear();
            Process[] p = Process.GetProcesses();//获取所有进程信息
            foreach (Process itme in p)
            {
                ListViewItem lvi = new ListViewItem();//lvi为listview对象中的项,每一个lvi对象去表示一个进程内容
                try
                {
                    lvi.Text = itme.ProcessName;//必须要有首项,不写这,首项会为空
                    //lvi.SubItems.Add(itme.Id.ToString());
                    /*以下都是首项的子项*/
                    lvi.SubItems.Add(itme.Id.ToString());
                    lvi.SubItems.Add(itme.StartTime.ToString());
                    lvi.SubItems.Add(itme.PagedMemorySize64.ToString());
                    lvi.SubItems.Add(itme.PriorityClass.ToString());
                }
                catch
                {
                
                }
                listView1.Items.Add(lvi);
            }
        }

//删除进程

 private void 结束进程ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //找到选中的项的id,根据ID找到对应的进程
            //selecteditems获取选中的项,subitems获取选中的项是子项
            string id = listView1.SelectedItems[0].SubItems[1].Text;
            Process p = Process.GetProcessById(Convert.ToInt32(id));//通过ID查找该进程
            p.Kill();
            //把选中的项移除掉
            listView1.SelectedItems[0].Remove();
        }

//线程控制图片切换显示

//开始切换图片

        Thread t;
        private void button3_Click(object sender, EventArgs e)
        {
            ThreadStart ts = new ThreadStart(cheakImg);
            t = new Thread(ts);
            t.IsBackground = true;
            t.Start();

        }

        public void cheakImg()
        {
            Random r = new Random();
            while (true)
            {
                Thread.Sleep(1000);
                int i = r.Next(0, imageList1.Images.Count);
                pictureBox1.Image = imageList1.Images[i];
                textBox1.Text = i.ToString();
            }
        }

//终止线程

        private void button4_Click(object sender, EventArgs e)
        {
            t.Abort();
        }
//挂起线程 暂停
        private void button5_Click(object sender, EventArgs e)
        {
            t.Suspend();
        }
//取消挂起线程 继续
        private void button6_Click(object sender, EventArgs e)
        {
          
            t.Resume();
        }


1. 用户权限管理模块 角色管理: 学生:查看实验室信息、预约设备、提交耗材申请、参安全考核 教师:管理课题组预约、审批学生耗材申请、查看本课题组使用记录 管理员:设备全生命周期管理、审核预约、耗材采购分发、安全检查 用户操作: 登录认证:统一身份认证(对接学号 / 工号系统,模拟实现),支持密码重置 信息管理:学生 / 教师维护个人信息(联系方式、所属院系),管理员管理所有用户 权限控制:不同角色仅可见对应功能(如学生不可删除设备信息) 2. 实验室设备管理模块 实验室信息管理: 基础信息:实验室编号、名称、位置、容纳人数、开放时间、负责人 功能分类:按学科(计算机实验室 / 电子实验室 / 化学实验室)标记,关联可开展实验类型 状态展示:实时显示当前使用人数、设备运行状态(正常 / 故障) 设备管理: 设备档案:名称、型号、规格、购置日期、单价、生产厂家、存放位置、责任人 全生命周期管理: 入库登记:管理员录入新设备信息,生成唯一资产编号 维护记录:记录维修、校准、保养信息(时间、内容、执行人) 报废处理:登记报废原因、时间,更新设备状态为 "已报废" 设备查询:支持按名称、型号、状态多条件检索,显示设备当前可用情况 3. 预约使用模块 预约管理: 预约规则:学生可预约未来 7 天内的设备 / 实验室,单次最长 4 小时(可设置) 预约流程:选择实验室→选择设备→选择时间段→提交申请(需填写实验目的) 审核机制:普通实验自动通过,高危实验(如化学实验)需教师审核 使用记录: 签到 / 签退:到达实验室后扫码签到,离开时签退,系统自动记录实际使用时长 使用登记:填写实验内容、设备运行情况(正常 / 异常),异常情况需详细描述 违规管理:迟到 15 分钟自动取消预约,多次违规限制预约权限 4. 耗材安全管理模块 耗材管理: 耗材档案:名称、规格、数量、存放位置、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值