none
請問一下 multithread 與 timer 的觀念, TKS. RRS feed

  • 問題

  • 想請問一下關於 multithread 與 timer 在用法上的差別, 令我困惑的事敘述如下 :
    我有兩件事都是用 timer 定時去觸發 event 而去執行函式, 一個是定時更換圖片,一個是定時更換 textbox.text的字串.
    那請問一下, 如果 :
    方式1 : 只寫一個 thread , 用 2 個 system.timers.timer 去觸發事件.
    還是
    方式2 : 分別寫兩個 thread, 兩個 thread 裡各有一個 system.timers.timer 觸發事件.

    想請教一下那種方式在效能上是比較好的??  或是可以請大大解釋一下 用 timer 在不同時間做不同的事 (只有單一 thread ), 效果可以跟用 multithread 比較嗎??  或是可以講講用 multithread 的時機, 依各位大大的經驗上來說...

    謝謝 !!  或許表達的不是很好,因為就是有疑惑的地方,卻想不出該怎麼問...  再次感謝您們的回答 !!
    2008年2月1日 下午 03:29

解答

  • Timer 事件是Window Message ,當負責接受 WM 的視窗產生執行緒(通常為主執行緒)正在忙碌中時,是不會回應 Timer 事件,多數情況是被拋棄。

     

    所以請確認你的事件是否必須同步執行,且可不可以被遺漏,若必須同時執行、不可被遺漏,則需要多緒執行。

     

    你沒有明確描述時,網友不能確認你的需求,就會建議你用較簡便的方式來處理

     

    2008年2月2日 上午 08:24

所有回覆

  • 你是「定時執行」根本沒有效能的問題,沒必要特別寫什麼 multithread 的程式吧!你寫兩個 Timer 就可以了。


    ----
    From: Will
    Blog: http://blog.miniasp.com/
    記載著 Will 在網路世界的學習心得與技術分享

    2008年2月2日 上午 05:09
  • 謝謝!!
    那請問一下, 如果 A 是 2s 做一次,  B 是 4s 做一次 , 那當 A 要做第2次時, 也就是 4s 時, B 也會被觸發, 那這樣一來程式執行上會有時間差嗎 ??  因為只有單一 thread 在跑不是嗎 ?
    還是說實際上是有這個問題存在的,但使用者感覺不出來,因為電腦執行速度太快了...??
    謝謝您的回答 !!
    2008年2月2日 上午 05:19
  • 每一個 Timer 可以說本身就是一個 Thread,且由 ThreadPool 所管理。

     

    ----
    From: Will
    Blog: http://blog.miniasp.com/
    記載著 Will 在網路世界的學習心得與技術分享

    2008年2月2日 上午 05:32
  • 意思就是說 宣告一個 timer 等於就是宣告出一個 thread 嗎??
    只不過這個 thread 是專門用來算時間的。
    如果是這樣的話,我就瞭解了, 就不必再多寫一個 thread了
    但是好像只有 system.timers.timer 才是這樣, windows.form 的 timer 好像只是單一 thread 的??
    謝謝您的答覆 !!
    2008年2月2日 上午 07:12
  • Timer 所使用的 Thread 不是用來「算時間」的,是用來執行事件的。


    ----
    From: Will
    Blog: http://blog.miniasp.com/
    記載著 Will 在網路世界的學習心得與技術分享

     

    2008年2月2日 上午 07:46
  • Timer 事件是Window Message ,當負責接受 WM 的視窗產生執行緒(通常為主執行緒)正在忙碌中時,是不會回應 Timer 事件,多數情況是被拋棄。

     

    所以請確認你的事件是否必須同步執行,且可不可以被遺漏,若必須同時執行、不可被遺漏,則需要多緒執行。

     

    你沒有明確描述時,網友不能確認你的需求,就會建議你用較簡便的方式來處理

     

    2008年2月2日 上午 08:24
  • 謝謝 大家 的回覆!!

    2008年2月2日 上午 09:56