<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      別拿Thread當定時器使用...

      經常可以看到很多程序使用Thread當作定時器(Timer)使用,例如定時檢查數據,定時清空緩存什么的

      就像以下代碼

      代碼
      Thread t = new Thread(p =>
      {
      while (true)
      {
      //做點什么...例如刷新數據 操作緩存 和其他定時任務
      Thread.Sleep(10000);
      }
      });
      t.Start();

      可能有的朋友已經注意到,在壓力比較大的Asp.net網站中這個Thread經常不能正常的工作,也許這個線程會永遠不會再起來.......那么定時任務也就泡湯了

      PS:如果是console的主線程 (標記了STAThreadAttribute ) 則可以正常的蘇醒和睡眠

       另外一個原因就是每個Thread都是很昂貴的,能不用就不用,(我的另外一個文章有提到,一個線程至少1m內存還要考慮給GC 和上下文調度造成的壓力)

      一般情況下建議使用System.Threading.Timer 來執行定時任務

        1)System.Threading.Timer由核心模式(Kernel-Mode)觸發,不會發生任務跑著跑著沒掉的慘案

        2)記得將Timer變量放在類的實例成員或者靜態成員上,以免Release模式下Timer被GC了(我的另外一個文章有提到這個情況)

        3)Timer設置定時執行以后,假設到了第二次的執行時間,即使第一次還沒有執行完,那么第二次也會開始,可以考慮使用以下兩種方案防止多次執行的沖突

          a.Timer設置為只執行一次 ,在Timer調用方法的最后一句,重置一下Timer.Change(int dueTime,int period);

          b.使用一個變量表示當前是否有定時器正在執行,建議用InterLocked操作一個int變量來表示

       

      PS:不是很推薦使用

        1) System.Timers.Timer 其實是對 System.Threading.Timer的封裝

        2) System.Windows.Forms.Timer ,基于消息機制

        3) 特別注意 不要從線程池中拿一個線程來做長期任務,特別是Sleep它

      PS:windows大約30ms才考慮一次線程切換....而且windows一般都有幾百個線程- -#

      posted on 2010-12-01 16:28  聽說讀寫  閱讀(4230)  評論(1)    收藏  舉報

      導航

      主站蜘蛛池模板: 色综合久久久久综合体桃花网| 亚洲人成电影网站 久久影视| 亚洲AV无码破坏版在线观看| 亚洲欧洲精品一区二区| 精品无码久久久久久久久久 | 精品偷拍一区二区三区| 色情一区二区三区免费看| 无码天堂亚洲国产av麻豆| 99午夜精品亚洲一区二区| 欧美在线一区二区三区精品| 国产精品有码在线观看| 精品少妇无码一区二区三批| 国内精品伊人久久久久影院对白| 中文字幕制服国产精品| 亚洲精品专区在线观看| 亚洲精品成人片在线观看精品字幕| 亚洲精品一区| 黄男女激情一区二区三区| 春菜花亚洲一区二区三区| 国产精品无码免费播放| 天堂网亚洲综合在线| 国产精品偷乱一区二区三区| 亚洲国产成人精品无码区蜜柚 | 草草浮力影院| 国产三级国产精品国产专| 国产精品白浆在线观看免费| 国产农村激情免费专区| 日韩亚洲国产激情一区二区| 无码av不卡免费播放| 亚洲欧美高清在线精品一区二区 | 双乳奶水饱满少妇呻吟免费看| 女人高潮流白浆视频| 日韩精品一区二区三区蜜臀| 一区二区中文字幕久久| 免费三级网站| 人妻中文字幕一区二区三| 日韩有码国产精品一区| 先锋影音av最新资源| 国产精品一区二区三区黄色| 波多野结系列18部无码观看AV | 国产一区二区三区小说|