PK 使人进步:highgear 向网友刘前辈提出很简单的切磋请求

[复制链接]
29163|170
Cortex-M0 发表于 2011-10-11 07:52 | 显示全部楼层
highgear老师推荐的 三角函数逼近快速算法(正余弦)。
中文翻译在此:
http://friendz.blog.163.com/blog/static/857571322011288505934/

经简化后的所用公式为:
Q * (4/pi * x - 4/pi^2 * x^2) + P * (4/pi * x - 4/pi^2 * x^2)^2
其中 x^2 要做一次乘法,上式中,至少要执行 6次乘法,继续将上述公式化简,改写成:
(4/pi * x - 4/pi^2 * x^2) = ((4/pi - 4/pi^2 * x) * x)
代入后,也仅仅减少一次乘法,至少要执行 5次乘法,比俺在 57楼的算法多用 1次乘法。
更不要说《三角函数逼近快速算法(正余弦)》需要用到浮点数运算,执行速度和效率更低~~~

评分

参与人数 1威望 +1 收起 理由
highgear + 1

查看全部评分

Cortex-M0 发表于 2011-10-11 08:03 | 显示全部楼层
综上,还是highgear老师提出的一个很简单的题目:
完全用整数运算完成sin, atan 函数,所点内存资源少,运算速度最快。

紧跟highgear老师,邓喵老师,继续玩“非典”~~~
hq_y 发表于 2011-10-11 08:35 | 显示全部楼层
很给力的算法。。。。。:hug::victory::kiss:
zbb564833642 发表于 2011-10-13 10:37 | 显示全部楼层
哈哈  。顶起
uniquehope 发表于 2011-10-13 12:31 | 显示全部楼层
:L擂台
Cortex-M0 发表于 2011-10-13 14:30 | 显示全部楼层
继续灌水~~~

因电机的加减速算法,要用到开平方,在小系统中,俺不太喜欢用浮点数,太耗资源,想弄个整数的~~~

网上搜了一下,号称“快速”、“极速”的开平方算法程序一大把,经下载测试,速度都慢的像蜗牛~~~

倒是老外的经典开平方算法,速度快些~~~

俺将其改写后,用C51编译后,再手工优化,经测试,效率还是满高的,远比国内的号称“快速”、“极速”的开平方算法,要快很多~~~

上传给感兴趣的盆友参考~~~
Cortex-M0 发表于 2011-10-13 14:32 | 显示全部楼层
16位整数开平方 C程序


/**********************************************************************************************
* uint16  isqrt(uint16 value1)
*    16位整数开平方

        用  途      :中颖SH79/88/89F51系列MCU
        作  者      :许意义
        21ic  ID    :LAOXU
        中颖论坛    : bbs.21ic.com   
        日    期    : 2011-10-11  

**********************************************************************************************/

unsigned int isqrt(unsigned int x)      // 16位整数开平方
{ unsigned int xr, xr1;
  unsigned int q2;
  xr = 0;                    
  q2 = 0x4000;         
  do{ xr1 = xr + q2;
      if(xr1 <= x)
        { x -= xr1;
                  xr = (xr >> 1) + q2;
        }
      else  
            { xr >>= 1;            
        }
    }while(q2 >>= 2);         
  if(xr < x)
    { return(xr + 1);        
    }
  else
    {
          return(xr);
    }
}

评分

参与人数 1威望 +1 收起 理由
highgear + 1

查看全部评分

Cortex-M0 发表于 2011-10-13 14:34 | 显示全部楼层
16位整数开平方 经优化后的 ASM程序,可编译成库。



  1. $NOMOD51
  2. NAME ISQRT
  3. /**********************************************************************************************
  4. * uint16  isqrt(uint16 value1)
  5. *    16位整数开平方

  6. 用  途      :中颖SH79/88/89F51系列MCU
  7.   作  者      :许意义
  8.   21ic  ID    :LAOXU
  9.   中颖论坛    : bbs.21ic.com   
  10. 日    期    : 2011-10-11  

  11. **********************************************************************************************/

  12. ?PR?_ISQRT?ISQRT  SEGMENT CODE
  13. PUBLIC _ISQRT
  14. RSEG  ?PR?_ISQRT?ISQRT
  15. ;---- Variable 'x?040' assigned to Register 'R6/R7' ----
  16. _ISQRT:  CLR   A        // 16位整数开平方
  17. ; { unsigned int xr, xr1;
  18. ;   unsigned int q2;
  19. ;   xr = 0;                    
  20. ;---- Variable 'xr?041' assigned to Register 'R2/R3' ----
  21.    MOV   R3,A
  22.    MOV   R2,A
  23. ;  R6>40H, q2 = 0x4000; R6>10H, q2 = 0x1000; R6>04H, q2 = 0x400; R6>01H, q2 = 0x100;           
  24. ;  R7>40H, q2 = 0x40;   R7>10H, q2 = 0x10;   R7>04H, q2 = 0x4;   R7>01H, q2 = 0x1;           
  25.    MOV   DPH,A
  26.    MOV   DPL,A
  27.    MOV   A,#040H
  28.    CJNE    R6,#40H,$+3
  29.    JNC     ISQRT_7
  30.    CJNE    R6,#10H,$+3
  31.    JNC     ISQRT_8
  32.    CJNE    R6,#04H,$+3
  33.    JNC     ISQRT_9
  34.    CJNE    R6,#01H,$+3
  35.    JNC     ISQRT_10
  36.    CJNE    R7,#40H,$+3
  37.    JNC     ISQRT_11
  38.    CJNE    R7,#10H,$+3
  39.    JNC     ISQRT_12
  40.    CJNE    R7,#04H,$+3
  41.    JNC     ISQRT_13
  42.    RR      A
  43.    RR      A
  44. ISQRT_13: RR      A
  45.    RR      A
  46. ISQRT_12: RR      A
  47.    RR      A
  48. ISQRT_11: MOV   DPL,A
  49.    SJMP    ISQRT_1
  50. ISQRT_10: RR      A
  51.    RR      A
  52. ISQRT_9: RR      A
  53.    RR      A
  54. ISQRT_8: RR      A
  55.    RR      A
  56. ISQRT_7: MOV   DPH,A
  57. ;   do{ xr1 = xr + q2;
  58. ISQRT_1: MOV   A,DPL
  59.    ADD   A,R3
  60.    MOV   R5,A
  61.    MOV   A,DPH
  62.    ADDC  A,R2
  63.    MOV   R4,A
  64. ;---- Variable 'xr1?042' assigned to Register 'R4/R5' ----
  65. ;       if(xr1 <= x)
  66.    SETB  C
  67.    MOV   A,R5
  68.    SUBB  A,R7
  69.    MOV   A,R4
  70.    SUBB  A,R6
  71.    JNC   ISQRT_2
  72. ;         { x -= xr1;
  73.    CLR   C
  74.    MOV   A,R7
  75.    SUBB  A,R5
  76.    MOV   R7,A
  77.    MOV   A,R6
  78.    SUBB  A,R4
  79.    MOV   R6,A
  80. ;     xr = (xr >> 1) + q2;
  81.    MOV   A,R2
  82.    CLR   C
  83.    RRC   A
  84.    MOV   R4,A
  85.    MOV   A,R3
  86.    RRC   A
  87.    ADD   A,DPL
  88.    MOV   R3,A
  89.    MOV   A,DPH
  90.    ADDC  A,R4
  91.    MOV   R2,A
  92. ;         }
  93.    SJMP  ISQRT_3
  94. ;       else { xr >>= 1;            
  95. ISQRT_2: MOV   A,R2
  96.    CLR   C
  97.    RRC   A
  98.    MOV   R2,A
  99.    MOV   A,R3
  100.    RRC   A
  101.    MOV   R3,A
  102. ;         }
  103. ;     }while(q2 >>= 2);         
  104. ISQRT_3:    MOV   R4,DPH
  105.    MOV   A,DPL
  106.    MOV   R0,#02H
  107.    INC   R0
  108.    SJMP  ISQRT_5
  109. ISQRT_4:    XCH   A,R4
  110.    CLR   C
  111.    RRC   A
  112.    XCH   A,R4
  113.    RRC   A
  114. ISQRT_5:    DJNZ  R0,ISQRT_4
  115.    MOV   DPH,R4
  116.    MOV   DPL,A
  117.    ORL   A,R4
  118.    JNZ   ISQRT_1
  119.    MOV   R4,A     // R4/R5 清0
  120.    MOV   R5,A
  121. ;   if(xr < x)
  122.    CLR   C
  123.    MOV   A,R3
  124.    SUBB  A,R7
  125.    MOV   A,R2
  126.    SUBB  A,R6
  127.    JNC   ISQRT_6
  128. ;     { return(xr + 1);        
  129.    MOV   A,R3
  130.    ADD   A,#01H
  131.    MOV   R7,A
  132.    CLR   A
  133.    ADDC  A,R2
  134.    MOV   R6,A
  135.    RET   
  136. ;     }
  137. ;   else { return(xr);
  138. ISQRT_6: MOV   A,R2
  139.    MOV   R6,A
  140.    MOV   A,R3
  141.    MOV   R7,A
  142. ;     }
  143. ; }  
  144.    RET   
  145. ; END OF _ISQRT
  146.    END

Cortex-M0 发表于 2011-10-13 14:35 | 显示全部楼层
32位整数开平方 C程序


/**********************************************************************************************
* uint32  lsqrt(uint32 value1)
*    32位整数开平方

        用  途      :中颖SH79/88/89F51系列MCU
        作  者      :许意义
        21ic  ID    :LAOXU
        中颖论坛    : bbs.21ic.com   
        日    期    : 2011-10-11  

**********************************************************************************************/

unsigned long lsqrt(unsigned long x)      // 32位整数开平方
{ unsigned long xr, xr1;
  unsigned long q2;
  xr = 0;                    
  q2 = 0x40000000L;         
  do{ xr1 = xr + q2;
      if(xr1 <= x)
        { x -= xr1;
                  xr = (xr >> 1) + q2;
        }
      else  
            { xr >>= 1;            
        }
    }while(q2 >>= 2);         
  if(xr < x)
    { return(xr + 1);        
    }
  else
    {
          return(xr);
    }
}
Cortex-M0 发表于 2011-10-13 14:36 | 显示全部楼层
32位整数开平方 经优化后的 ASM程序,可编译成库。




  1. $NOMOD51
  2. NAME LSQRT
  3. /**********************************************************************************************
  4. * uint32  lsqrt(uint32 value1)
  5. *    32位整数开平方

  6. 用  途      :中颖SH79/88/89F51系列MCU
  7.   作  者      :许意义
  8.   21ic  ID    :LAOXU
  9.   中颖论坛    : bbs.21ic.com   
  10. 日    期    : 2011-10-11  

  11. **********************************************************************************************/
  12. ?PR?_LSQRT?LSQRT  SEGMENT CODE
  13. ?DT?_LSQRT?LSQRT  SEGMENT DATA OVERLAYABLE
  14. EXTRN CODE (_ISQRT)
  15. EXTRN CODE (?C?ULCMP)
  16. EXTRN CODE (?C?ULSHR)
  17. PUBLIC _LSQRT
  18. RSEG  ?DT?_LSQRT?LSQRT
  19. ?_LSQRT?BYTE:
  20. x?040:      DS   4
  21.   ORG  4
  22. xr?041:     DS   4
  23.   ORG  8
  24. q2?042:     DS   4
  25. ;xr?043:    DS   4  ---> DPL:DPH:DPL1:DPH1
  26. DPL1       EQU   84H
  27. DPH1     EQU   85H
  28. RSEG  ?PR?_LSQRT?LSQRT
  29. _LSQRT:     MOV   A,R4
  30.    ORL     A,R5
  31.    JNZ     LSQRT_1      // 16位整数开平方
  32.    LJMP    _ISQRT
  33. LSQRT_1: MOV   x?040+03H,R7    // 32位整数开平方
  34.    MOV   x?040+02H,R6
  35.    MOV   x?040+01H,R5
  36.    MOV   x?040,R4
  37. ; { unsigned long xr, xr1;
  38. ;   unsigned long q2;
  39. ;   xr = 0;                    
  40.    CLR   A
  41.    MOV   xr?041+03H,A
  42.    MOV   xr?041+02H,A
  43.    MOV   xr?041+01H,A
  44.    MOV   xr?041,A
  45. ;  R4>40H, q2 = 0x40000000; R4>10H, q2 = 0x10000000; R4>04H, q2 = 0x4000000; R4>01H, q2 = 0x1000000;           
  46. ;  R5>40H, q2 = 0x400000;   R5>10H, q2 = 0x100000;   R5>04H, q2 = 0x40000;   R5>01H, q2 = 0x10000;           
  47.    MOV   q2?042+03H,A
  48.    MOV   q2?042+02H,A
  49.    MOV   q2?042+01H,A
  50.    MOV   q2?042,A
  51.    MOV     R0,#x?040
  52.    MOV     R1,#q2?042
  53.    MOV     R2,#2
  54.    MOV   A,#40H
  55. LSQRT_10:   CJNE    @R0,#40H,$+3
  56.    JNC     LSQRT_2
  57.    CJNE    @R0,#10H,$+3
  58.    JNC     LSQRT_3
  59.    CJNE    @R0,#04H,$+3
  60.    JNC     LSQRT_4
  61.    CJNE    @R0,#01H,$+3
  62.    JNC     LSQRT_5
  63.    INC     R0
  64.    INC     R1
  65.    DJNZ    R2,LSQRT_10
  66.    DEC     R1
  67. LSQRT_5: RR      A
  68.    RR      A
  69. LSQRT_4: RR      A
  70.    RR      A
  71. LSQRT_3: RR      A
  72.    RR      A
  73. LSQRT_2: MOV   @R1,A
  74. ;   do{ xr1 = xr + q2;
  75. LSQRT_6: MOV   A,xr?041+03H
  76.    ADD   A,q2?042+03H
  77.    MOV   DPH1,A
  78.    MOV   A,xr?041+02H
  79.    ADDC  A,q2?042+02H
  80.    MOV   DPL1,A
  81.    MOV   A,xr?041+01H
  82.    ADDC  A,q2?042+01H
  83.    MOV   DPH,A
  84.    MOV   A,xr?041
  85.    ADDC  A,q2?042
  86.    MOV   DPL,A
  87. ;       if(xr1 <= x)
  88.    MOV   R7,x?040+03H
  89.    MOV   R6,x?040+02H
  90.    MOV   R5,x?040+01H
  91.    MOV   R4,x?040
  92.    MOV   R3,DPH1
  93.    MOV   R2,DPL1
  94.    MOV   R1,DPH
  95.    MOV   R0,A
  96.    SETB  C
  97.    LCALL ?C?ULCMP
  98.    JNC   LSQRT_7
  99. ;         { x -= xr1;
  100.    CLR   C
  101.    MOV   A,x?040+03H
  102.    SUBB  A,DPH1
  103.    MOV   x?040+03H,A
  104.    MOV   A,x?040+02H
  105.    SUBB  A,DPL1
  106.    MOV   x?040+02H,A
  107.    MOV   A,x?040+01H
  108.    SUBB  A,DPH
  109.    MOV   x?040+01H,A
  110.    MOV   A,x?040
  111.    SUBB  A,DPL
  112.    MOV   x?040,A
  113. ;     xr = (xr >> 1) + q2;
  114.    MOV   R7,xr?041+03H
  115.    MOV   R6,xr?041+02H
  116.    MOV   R5,xr?041+01H
  117.    MOV   R4,xr?041
  118.    MOV   R0,#01H
  119.    LCALL ?C?ULSHR
  120.    MOV   A,R7
  121.    ADD   A,q2?042+03H
  122.    MOV   xr?041+03H,A
  123.    MOV   A,R6
  124.    ADDC  A,q2?042+02H
  125.    MOV   xr?041+02H,A
  126.    MOV   A,R5
  127.    ADDC  A,q2?042+01H
  128.    MOV   xr?041+01H,A
  129.    MOV   A,R4
  130.    ADDC  A,q2?042
  131.    MOV   xr?041,A
  132. ;         }
  133.    SJMP  LSQRT_8
  134. ;       else { xr >>= 1;            
  135. LSQRT_7: MOV   R7,xr?041+03H
  136.    MOV   R6,xr?041+02H
  137.    MOV   R5,xr?041+01H
  138.    MOV   R4,xr?041
  139.    MOV   R0,#01H
  140.    LCALL ?C?ULSHR
  141.    MOV   xr?041+03H,R7
  142.    MOV   xr?041+02H,R6
  143.    MOV   xr?041+01H,R5
  144.    MOV   xr?041,R4
  145. ;            }
  146. ;     }while(q2 >>= 2);         
  147. LSQRT_8:    MOV   R7,q2?042+03H
  148.    MOV   R6,q2?042+02H
  149.    MOV   R5,q2?042+01H
  150.    MOV   R4,q2?042
  151.    MOV   R1,#02H
  152.    MOV   R0,#02H
  153.    LCALL ?C?ULSHR
  154.    MOV   q2?042+03H,R7
  155.    MOV   q2?042+02H,R6
  156.    MOV   q2?042+01H,R5
  157.    MOV   q2?042,R4
  158.    MOV   A,R4
  159.    ORL   A,R5
  160.    ORL   A,R6
  161.    ORL   A,R7
  162.    JZ    $ + 5H
  163.    LJMP  LSQRT_6
  164. ;   if(xr < x)
  165.    MOV   R7,x?040+03H
  166.    MOV   R6,x?040+02H
  167.    MOV   R5,x?040+01H
  168.    MOV   R4,x?040
  169.    MOV   R3,xr?041+03H
  170.    MOV   R2,xr?041+02H
  171.    MOV   R1,xr?041+01H
  172.    MOV   R0,xr?041
  173.    CLR   C
  174.    LCALL ?C?ULCMP
  175.    JNC   LSQRT_9
  176. ;     { return(xr + 1);        
  177.    MOV   A,xr?041+03H
  178.    ADD   A,#01H
  179.    MOV   R7,A
  180.    CLR   A
  181.    ADDC  A,xr?041+02H
  182.    MOV   R6,A
  183.    CLR   A
  184.    ADDC  A,xr?041+01H
  185.    MOV   R5,A
  186.    CLR   A
  187.    ADDC  A,xr?041
  188.    MOV   R4,A
  189.    RET   
  190. ;     }
  191. ;   else { return(xr);
  192. LSQRT_9: MOV   R7,xr?041+03H
  193.    MOV   R6,xr?041+02H
  194.    MOV   R5,xr?041+01H
  195.    MOV   R4,xr?041
  196. ;        }
  197. ; }
  198.    RET   
  199. ; END OF _LSQRT
  200.    END

zal430521 发表于 2011-10-13 14:38 | 显示全部楼层
呼╭══╮ ┌══════┐
╭╯让路║═║╰纯属路过╮║
╰⊙═⊙╯ └══⊙═⊙═~
刘前辈 发表于 2011-10-13 19:38 | 显示全部楼层
本帖最后由 刘前辈 于 2011-10-13 20:08 编辑
23# highgear
多任务的实现说穿了很简单,就是利用定时中断打断当前运行的任务,把当前所使用的寄存器 push 到栈中,然后把切换到下一个任务的栈点,pop 出这个即将运行的任务现场,最后把运行权交给这个任务。可以看到,多任务的实现的关键点是中断,在 windows 下要实现打断运行的任务得到控制权,不是做不到,但非常复杂,所以在 PC 中应在 DOS 下实现,DOS 支持 bios 的0x10定时中断,稍加改造就可以是支持 1ms 的中断。


哈哈……几天没上21IC,不知道所长一直追着我PK。看来所长前一阵把5个哲学家喂成了猪,太有悖于“天下第一”的称号,如今一定要把自己21IC元老的声誉捞回来?

    算了吧,连题意还没搞清呢:大多数人都像所长23#似地,以为RTOS是多任务按时间片切换。为了防止临界区内切换,于是各种保护数据机制,互斥、信号量、消息传递……

     你也不想想,哲学家就餐,是RTOS 么?我正在吃饭,你按时间片来抢夺我的叉子!“别吃啦,到时间该我吃啦……”然后调度切换。你块头比我大?你是乌克兰猪?还什么“稍微的优先级”,——如今也觉得自己当时创新的OS理论很好笑吧。
  
     当今世界,OS理论研究早就成熟。十年前,20年前就有大师说OS理论研究已经结束。各种机制早就成熟,没有任何遗留问题。——咱中国的21IC所长突然创新了个什么“些微优先级”机制。在抢占和非抢占之间调度?呵呵,中国讲习所长的名字要载入世界OS发展史册了。

   DOS,LInux 早期版本都是非抢夺式内核;——我吃完饭,自动放弃2个叉子资源,同时唤醒两边饥饿等待的伙伴。——是让等待的伙伴重新再检测资源,还是我帮助伙伴检测他的叉子资源?这又是2种机制。

    所以,所长还是玩你的裸奔“些微优先级”吧,还什么RTOS?——连PK题目都出错了,和实时时限根本没关系,我在吃饭时,你再饥饿也得等。根本没有时限。

      否则就是猪。



、、
刘前辈 发表于 2011-10-13 19:57 | 显示全部楼层
本帖最后由 刘前辈 于 2011-10-13 20:13 编辑

“哲学家就餐”问题,咱早就研究透了。把独创的实验代码贴在这?所长你看得懂么?

呵呵,告诉LZ,3种解法:同步ASR通信机制,信号量AND集机制,管程机制。——前2种都是同步机制,(和时间片中断根本没关系。后一种管程机制纯粹是故意加上时间片抢夺式调度实验一下而已。)所长还是玩你的BIOS  1ms 中断吧。——连修改时间片都不会?书上有啊。每个哲学家的think/eat  模拟时间至少应该2秒钟以上,让人看得出停顿才行吧。LZ几百ms一闪而过,谁知道你的程序在干什么。



、、
 楼主| highgear 发表于 2011-10-13 21:04 | 显示全部楼层
顶老刘!给老刘鼓掌!

说真的,我们还真的没有看过老刘|冷漠 写过的代码,除了那个空间换时间”算法“的代码(当然那不是老刘的真正水平),甚至在哲学家就餐的问题上,仍然是口水一堆,代码全无,抄了一段代码,还不完整。
老刘,73 74楼不值得回复,喷口水没有意义。希望老刘能够用代码展示水平, 让众网友开开眼,让 highgear 无地自容一回。
.
.
.

请老刘在下一帖子简单地给一个回复:
1)  接受
2)  不接受
浪迹天涯WAN 发表于 2011-10-13 21:46 | 显示全部楼层
很激烈啊……围观
浪迹天涯WAN 发表于 2011-10-13 21:47 | 显示全部楼层
支持一下
Cortex-M0 发表于 2011-10-14 06:44 | 显示全部楼层
继续灌水~~~
SeaSun 发表于 2011-10-14 10:38 | 显示全部楼层
两位施主,佛法无边,回头是岸..... 阿弥陀佛.....:victory:
DownCloud 发表于 2011-10-14 16:04 | 显示全部楼层
看刘前辈解说,一定有很优秀的解决方法,期待刘前辈的代码,让小菜的我开开眼。
刘前辈 发表于 2011-10-14 18:28 | 显示全部楼层
本帖最后由 刘前辈 于 2011-10-14 19:04 编辑

呵呵,highgear 真是太看不起我了:中国你找不到一个教授像我这样写的“哲学家就餐”解法,那是我研究生优秀论文。我也只给教授看才舍得拿出来换个学位,到万方数据下载还得付40元,——每页2元。你舍得吗?
    你当我垃圾程序往这贴?你的喂猪程序还差不多。连个arr[2][3]都搞不清楚的人,还玩什么操作系统经典程序?
     透露一点点:所有人都用资源同步并发机制来解哲学家就餐问题,只有老刘一个人用的任务同步机制玩的就餐经典问题。(哈,所有的人向左,我必向右。)这令教授评委大跌眼镜,行吗?行不行我实验板显示给你看。结果优秀论文是肯定的,第一名只有一个;其他人都差不多一样,抄抄书而已,看谁能吹了。

    “如果没有实验(显示),任何理论(机制)都是对的”——丁肇中。(吹破天你也拿不了诺贝尔奖,哪怕喂猪都有人说你有新意,要向你学习。)

      所长你看不懂,你神童也没读过OS内核设计与实现专业研究生。在这扯什么劲,我没写过程序?我记得以前送你一篇我的论文“现场总线中的环形网”,结果让你尴尬不已。“这跟我有什么关系……”哈哈,看不懂恼羞成怒了。如果再送你一篇“哲学家就餐问题的管程解法”,那你不得背过气去?谁都知道,你没学过操作系统原理;所以没必要在这装懂。没学过你就看得懂OS程序?还在这装腔作势BIOS ?

     哈哈,没事,需要的话我贴一个proteus 图,带上我的hex 文件,让你开开眼看看5个哲学家是怎么轮转就餐的。

       你的呢?拿得出来?一堆乱码,——C++,C#,JAVA 一块儿上,就是没有输出给人看。结果仔细一看:切,玩裸奔呢——5个哲学家成了按顺序排队吃饭,假若每个人吃一小时,那么最后一个正餐还没吃完,第一个已经到了晚餐时间。——如此整天喂猪,我跟你PK?给你点面子不笑你就行了。

      我贴出来实验图有意思吗?除了让你无地自容。于是,又追着我PK下一个题目啦……脸皮太厚了吧……

       以前输给1952 多少次?输得下跪拜佛的情景我都旁观**了。如今又赖上我啦?有完没完?……

        要不要我把你怎么输给1952 的帖子挖坟都挖出来?忘了自己怎么被1952 涮出论坛的?如今连“讲习所长”的id 都不敢张扬了;——被人羞辱过了。

        提醒一下:1952 的“一道题……”事过3年,如今所长还是解不出来吧。这么简单的OS并发问题3年都解不出来,如今还在这摇头晃脑装,谁还陪你玩?



、、
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0