最近看到这两个问题, 不是很明白
什么是 线程饿死? 好晕!~
请高手指点一下, 谢谢.举例线程饿死.怎么避免死锁和饿死

解决方案 »

  1.   

    所谓死锁是指在多道程序系统中,一组进程中的每一个进程军无限期等待被该组进程中的另一个进程所占有且永远不会释放的资源。
    饥饿是指系统不能保证某个进程的等待时间上界,从而使该进程长时间等待,当等待时间给进程推进和响应带来明显影响时,称发生了进程饥饿。当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时称该进程被饿死。下面我们就来分别讨论一下死锁与饥饿各自的特点。
    详见上面的blog。
      

  2.   

    线程饥饿:假设有两个线程都执行上面的程序,并且工作代码需要运行较长时间。  while(true){
        if(!lock){
          lock;
          do something,a very large work 
          unlock;
        }else
          sleep for a while;
      }
    解决这种现象的一种好办法就是用信号量机制。避免死锁和饥饿的最好办法,不使用多线程。当然,这是不可能的啦,那就慢慢学习吧
      

  3.   

    饥饿,哈哈哈,比如说 飞机起降共享跑道,有军机 有民航机,军机有优先权,因为优先权的问题,从而导致,民航这类线程在一段时间内甚至一辈子都拿不到跑道(资源)饥饿 starvation翻译成中文乖乖的同时欢迎来我的weibo 吐槽
    哈哈
    http://www.weibo.com/meiergo