进程与线程

本文详细介绍了进程与线程的概念,包括两者的定义、特点及创建方式。文章还讲解了如何在Windows环境下查看当前系统中的进程,并提供了创建进程与线程的具体方法。

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

1、进程介绍
     
     进程是60年代初首先由麻省理工学院的系统和IBM公司的CTSS/360系统引入的。进程是操作系统结构的基础,是一个正在执行的程序,是计算机中正在运行的程序实例,是可以分配给处理器并由处理器执行的一个实体。
     进程是惰性的,它仅仅是一个包含有线程的容器,其本身并没有执行代码的能力,因此每个进程在创建之初都会创建一个主线程用于执行代码,如果此主线程结束,系统就会销毁这个进程的内核对象。
     进程是程序在一个数据集合上运行的过程,是操作系统进行资源分配和调度的一个独立单位,可以简单地分为系统进程和用户进程。通俗地讲,用于完成操作系统各种功能的进程就是系统进程,它们是处于运行状态下的操作系统本身,而用户进程就是由用户自行启动的进程。
     在Windows下,进程又被细化为线程,也就是一个进程下有多个能独立运行的更小单位。和程序不同的是,程序是静止的,而进程是动态的,在Windows这样的多任务操作系统中,为了准确描述多道程序在并发(同时)执行时资源分配的动态性,程序执行的间断性,相互通信的可能性以及同步互斥的必要性等动态特性,故引入进程的形式参与系统的并发执行。

     进程查看方式:
     a.打开任务管理器,点击进程即可查看;
      b.在开始菜单搜索cmd,打开cmd命令行,输入tasklist命令;
     c.在cmd命令行,输入wmic命令,再输入process即可查看。

     进程创建:
     使用CreateProcess( )函数创建一个进程,此函数执行成功后将创建一个进程内核对象,但需注意的是,“进程内核对p象”与“进程“所指并非是同一个东西。因此, CreateProcess( )函数可以创建成功并不代表进程本身就能正常加载并运行。

2、线程介绍

     一个线程就是操作系统的一个内核对象,在Windows操作系统内核中没有进程的概念,只有线程的概念,进程只不过是在逻辑上对一组线程及其相关的资源进行的一种封装。
     线程本质上是”进程“中某个单一顺序的控制流,也被称为轻量进程,指的是运行中程序的调度单位。
     一个线程可以再次创建多个线程,由其创建的线程仍然分别可以创建多个线程。作为一个执行单元来讲,线程占用的系统资源远远不及进程,但其本质上能实现的功能却并未大打折扣。因此,我们在需要时应该优先考虑创建新线程,而非启动一个新进程。

     线程创建:
     使用CreateThread( )函数创建一个新线程。

     线程函数:
     如同主线程的初始函数为mainCRTStartup/wmainCRTStartup一样,我们创建线程时也需要指定一个线程函数。为了取得一致性,Windows对线程函数做了限定,原型如下:
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
     return 0;
}
     我们知道线程可以指定线程函数,那么主线程同样可以指定自己的线程函数,在Visual Studio下,我们可以通过以下编译选项指定主线程函数:
// 指定程序入口函数为MyFun( )
#pragma  comment(linker,”entry:\”MyFun\““)
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值