多线程学习(二)

线程是一个轻量级的进程。线程给操作系统带来的开销要轻

当从处理器删除一个进程并激活另外一个进程,就发生上下文切换。

线程没有地址空间,就包含在进程的地址 空间,线程上下文一个堆栈、一个寄存器和一个优先权


线程和进程的不同:

线程没有地址空间

父和子进程必须使用进程间通信机制,同一进程的线程通过读取和写入数据写到进程变量来通信。

线程可以相互进行控制,进程间不能施加控制

子进程不能对父进程施加控制,线程都可以对主线程施加控制,并影响主线程


线程的优点:

当创建一个主进程的时候,系统就创建一个主线程。主线程为执行线程,多线程本质是多个子线程并发执行。


线程的缺点:

线程需要同步并发访问内存。需要进行同步化。

如果一个数据产生影响其他线程的不良数据,相对而言,进程更为独立。


线程有不同的类型

休眠和单步

先占工作

延迟工作

休眠线程在系统中某事件发生前一直挂起。当事件发生时候,休眠线程得到恢复,并执行任务。执行任务后,线程为非激活,直到事件再次发生。

单步线程实际上也是休眠线程,但它们执行任务一次之后就终止。

休眠线程和单步线程也可以称为监视线程。


先占工作:

使用先占工作策略,对情况进行估计,并先执行一些动作,永不等待规则,目的是阻止非激活。


延迟工作:

线程可以将任务延迟或推迟到将来某个时间执行的另外一个线程。


线程的相关信息

大部分线程的行为信息由进程定义

posix环境有个针对线程的属性对象,这个对象是线程属性的封装体。属性对象可以与一个线程关联,也可以与多个线程关联。

每个线程维护一个进程内存中分配的堆栈。在线程终止的时候释放堆栈,并销毁变量。

线程在执行完毕后终止,当线程返回创建它的函数自动终止。线程资源释放,线程也可以显示地调用一个线程终止函数。线程可以强迫另外一个线程终止,但是不能强迫自己终止。


分离线程为异步子进程,它不继承父进程的属性。它们用作后台进程,在终止时候不返回到父进程

守护线程是分离进程的一个例子,大部分时间处于阻塞,直到系统中发生一个事件,它才激活。


远程线程:

在win32中,一个进程中的线程可以创建另外一个进程中的线程


线程控制

线程可以访问别的线程打开的资源,可以关闭别的线程。

临界区是一种防止冲突的机制。


优先类:

优先权倒置,当一个较低优先权线程锁定一个资源,这个资源是一个较高优先权需要,就会发生优先权倒置。






























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值