多线程编程

Q:线程的定义及其组成?
A:线程是进程的一个实体,是CPU调度和分派的基本单位,是比进程更小的能独立运行的基本单位。线程本身不拥有系统资源,但它可与同一进程的其他线程拥有该进程的所有资源。

一个线程包括以下内容:1.一个指向当前被执行指令的指令指针;2.一个栈;3.一个寄存器值的集合,定义了一部分描述正在执行线程的处理器状态的值;4.一个私有的数据区。
Q:为什么在引进进程之后还引进线程?
A:需要多线程的原因是:

1. 在许多应用中会同时发生多种活动,某些活动会随着时间的推移被阻塞,通过将这些应用程序分解成可以准并行运行的多个顺序线程。线程作为新元素,其拥有并行实体共享同一个地址空间和所有可用数据的能力。

2. 线程较之进程更易创建和撤销,在有大量线程需要动态和快速修改时,这一特性很重要。

3. 在一些需要大量I/O处理和大量计算的情况下,拥有多线程允许这些活动彼此重叠进行,对程序性能的提升是非常明显的。

4. 在多CPU系统中,多线程是有益的,在这样的系统中,可以真正实现物理上的多线程并行运行。

*线程概念试图实现的是共享一组资源的多个线程的执行能力,以便这些线程可以为完成某项工作而共同工作。
Q:多线程开发?

A:多线程开发的最基础概念主要包括三点:线程,互斥锁,条件。线程操作又分为线程的创建,退出,等待三种;互斥锁操作又分为创建,销毁,加锁,解锁四种操作;条件操作有创建,销毁,触发,广播和等待五种操作。
Q:线程属性?

A:线程具有以下属性,其结构如下:

Typedef struct

{

int detachstate; //线程的分离状态

int schedpolicy; //线程调度策略

int inheritsched; //线程的继承性

struct sched_param schedparam; //线程调度参数

int scope; //线程的作用域

size_t guardsize; //线程栈末尾的警戒缓冲区大小

int atackaddr_set;

void * stackaddr; //线程栈的位置

Size_t stacksize; //线程栈的大小

}pthread_attr_t;
Q:线程同步机制?
A:通过互斥锁可以实现对线程之间资源竞争的合理安排。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值