多线程编程的一点讨论

来源:互联网 发布:java实现dijkstra 编辑:程序博客网 时间:2024/05/21 15:07
    本来列下如下题目甚至更多,没有时间去整理。

    简单说说吧:
    一、线程带来的好处是低计算任务环境中的快速响应(如:GUI)和多CPU的充分利用,妄想通过多线程让许多计算量大的任务在单CPU上提速,那是笑话。

    二、同步:只要明白了为什么要同步,那多线程就没什么难的了。换个角度,把共享数据作成线程安全的后,也就没有了线程难控的一些问题。搜索Monitor模式解决线程间共享数据一致性问题。

   三、理解何时引发这种数据访问不一致,当然是共享的了(如:全局数据)。说点低级的:不是只要共享对象就要加锁,还要看对象是否有状态,无状态对象只是操作的集合而已。尽量使用堆栈,这会简化线程问题,因为线程切换时自动保存函数活堆栈。

  四、大致听过几个锁:自旋锁——它适合短时间操作加锁,又称闪锁,利用硬件机制的加锁,它所带来的好处是开销低,还有内存屏蔽(百度一下,我也懒得查了)。而Mutex等内核对象锁,涉及系统资源的分配以及执行时开销都很大。

  五、看看ACE的线程库:并发和同步策略。

  好了,好累~~~~~~~~~~~~
   
一、 线程模型
  • 用户级线程模型(N:1)
  • 系统级线程模型(1:)
  • 混合线程模型(M:N)
二、何时使用多线程

三、线程同步