多線程程序设计中的常见问题.pptVIP

  • 4
  • 0
  • 约3.77千字
  • 约 33页
  • 2017-04-10 发布于上海
  • 举报
多線程程序设计中的常见问题

多线程程序设计中的常见问题 内容 线程过多 数据竞争、死锁和活锁 线程安全函数和库 1. 线程过多 线程是否是越多越好? 多线程目的是为不同程序合理地安排运行时间,充分利用系统资源 过多的线程可能会严重影响程序的性能。 将给定的工作量划分给过多的线程会造成每个线程的工作量过少,因此可能导致线程启动和终止的开销比程序实际工作的开销还要多; 过多并发线程的存在将导致共享有限硬件资源的开销增大。 1. 线程过多 当软件线程的个数超过CPU核数时,支持抢占式多任务处理的操作系统一般会采用时间片轮转调度的方案。 当系统从一个软件线程切换到另一个软件线程时,它将保存被抢占的软件线程的线程上下文,并重新加载线程队列中下一个软件线程的上下文。 1. 线程过多 操作系统的时间片轮转调度方案也将引入额外开销,随着软件线程的增多,这种开销将会急剧增加,进而降低系统性能,这种开销有以下几种: 线程间切换时保存和恢复进程寄存器的开销。随着线程数目的增加,系统分给每个线程的时间片相应减少; 使用时间片机制的时候,保存和恢复线程使用的cache的开销则是更敏感的一种开销。 线程对主存的争夺,导致性能上的损失。 1. 线程过多 还存在一个性质不同,后果可能更加严重的问题。 护航,指线程聚集在一起,等待获取某一个锁。某个线程持有一个锁,并且用完了自己的时间片,所有等待这个锁的线程必须等待这个线程被唤醒并且释放锁。

文档评论(0)

1亿VIP精品文档

相关文档