一个程序有几个线程, 线程是什么东东?

一个程序有几个线程, 线程是什么东东?,第1张

分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:

如题~

解析:

线程(thread, 台湾称 执行绪)是"进程"中某个单一顺序的控制流。也被称为轻量进程(ligheight processes)。计算机科学术语,指运行中的程序的调度单位。

线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。线程不拥有系统资源,只有运行必须的一些数据结构;它与父进程的其它线程共享该进程所拥有的全部资源。线程可以创建和撤消线程,从而实现程序的并发执行。一般,线程具有就绪、阻塞和运行三种基本状态

在多中央处理器的系统里,不同线程可以同时在不同的中央处理器上运行,甚至当它们属于同一个进程时也是如此。大多数支持多处理器的 *** 作系统都提供编程接口来让进程可以控制自己的线程与各处理器之间的关联度(affinity)。
有时候,线程也称作轻量级进程。就象进程一样,线程在程序中是独立的、并发的执行路径,每个线程有它自己的堆栈、自己的程序计数器和自己的局部变量。但是,与分隔的进程相比,进程中的线程之间的隔离程度要小。它们共享内存、文件句柄和其它每个进程应有的状态。

进程可以支持多个线程,它们看似同时执行,但互相之间并不同步。一个进程中的多个线程共享相同的内存地址空间,这就意味着它们可以访问相同的变量和对象,而且它们从同一堆中分配对象。尽管这让线程之间共享信息变得更容易,但您必须小心,确保它们不会妨碍同一进程里的其它线程。

1、线程的定义

线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元。

线程,在网络或多用户环境下,一个服务器通常需要接收大量且不确定数量用户的并发请求,为每一个请求都创建一个进程显然是行不通的,——无论是从系统资源开销方面或是响应用户请求的效率方面来看。因此, *** 作系统中线程的概念便被引进了。

线程,是进程的一部分,一个没有线程的进程可以被看作是单线程的。线程有时又被称为轻权进程或轻量级进程,也是 CPU 调度的一个基本单位。

2、线程的作用:

线程的作用很多,举个最为典型的例子:

当需要在网络上放一个服务端,一个客户端访问时,就会新建一个线程处理这个客户端的事务,这样的话只要不断新建线程就可以处理多个用户的请求了。

扩展资料

线程的五种状态:

1、新生状态(New)

当一个线程的实例被创建即使用new关键字和Thread类或其子类创建一个线程对象后,此时该线程处于新生状态。 此时线程不是活着的(not alive);

2、就绪状态(Runnable)

通过调用线程实例的start()方法来启动线程使线程进入就绪状态;但还没有被分配到CPU,处于线程就绪队列;此时线程是活着的(alive)。

3、运行状态(Running)

一旦获取CPU,线程就进入运行状态,线程的run()方法才开始被执行,如果在给定的时间内没有执行结束,就会被系统给换下来回到线程的就绪状态,此时线程是活着的(alive)。

4、阻塞状态(Blocked)

通过调用join()、sleep()、wait()或者资源被暂用使线程处于阻塞状态,此时线程是活着的(alive)。

5、死亡状态(Dead)

当一个线程的run()方法运行完毕或被中断或被异常退出,该线程到达死亡状态。处于Dead状态调用start()方法,会出现异常。

参考资料:

百度百科-线程

常驻线程有什么用呢?

让一个一直存在的子线程,等待其他线程发来消息,处理其他事件。

1设置成全局的,如果是线程对象是局部的就会死掉
@property(nonatomic,strong)NSThreadthread;

2初始化线程并启动

selfthread=[[NSThread alloc]initWithTarget:selfselector:@selector(run)object:nil];[selfthread start];
3启动RunLoop,子线程的RunLoop默认是停止的
4利用常驻线程处理事情

[selfperformSelector:@selector(action)onThread:selfthread withObject:nil waitUntilDone:NO];


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13355822.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-20
下一篇 2023-07-20

发表评论

登录后才能评论

评论列表(0条)

保存