none
有關電腦單核和多核跑多執行緒問題是否有差別 RRS feed

  • 問題

  • 之前已經PO一篇文章問過相似的問題了…
    所以想要大致想在提問一下…

    不知道多執行緒在單核或多核心執行上是否會有什麼差異呢…
    因為現在一直遇到ObjectDisposedException這個問題…
    有人是說是Invoke所導致的問題…
    但是這我一直無法捕抓到錯誤…
    因為相同的程式在單核上跑跑出ObjectDisposedException的機率真的非常的高…
    問題一:不知道在多執行緒的撰寫上應該特別注意什麼事件?
    問題二:有什麼錯誤可能會導致ObjectDisposedException的發生(又應該怎麼去除錯或解決問題)

    或者不知道在這方面有什麼書或資訊網站可以參考的嗎…真的很急需知道…謝謝…
    2009年12月8日 下午 02:08

解答

  • 在多核且多執行緒下,若沒限定 CPU ,會自動分散到每一個 CPU 去跑,先前討論有指定新增執行緒在某幾個 CPU 核心上跑的程式碼,可以去翻來看看。

    我自己倒是沒碰過,我覺得是你自己做物件終結的問題,我是盡量留給 .Net 自行管理物件生命週期,定時呼叫 GC.Collect 做記憶體回收,非必要我不自己做 Disponse 。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 justinwu 2009年12月9日 上午 06:40
    2009年12月9日 上午 01:40

所有回覆

  • 在多核且多執行緒下,若沒限定 CPU ,會自動分散到每一個 CPU 去跑,先前討論有指定新增執行緒在某幾個 CPU 核心上跑的程式碼,可以去翻來看看。

    我自己倒是沒碰過,我覺得是你自己做物件終結的問題,我是盡量留給 .Net 自行管理物件生命週期,定時呼叫 GC.Collect 做記憶體回收,非必要我不自己做 Disponse 。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 justinwu 2009年12月9日 上午 06:40
    2009年12月9日 上午 01:40
  • HI,

    除非應用程式想自行控制跑在指定的CPU, 否則程式跑在單核處理器或多核處理器基本上寫法並沒有不同, 您的問題應該是出去物件生命週期管理的問題, 您的程式中有類別實作IDisposable介面嗎?
    2009年12月9日 上午 02:30
  • 感謝大家的回答…
    我終於在n百次的測試下找到問題所在了…
    我的問題是因為我現在有2個執行緒…
    第一個:主執行緒是更新頁面資料
    第二個:次執行緒是輪詢讀取回機器內的內容值,然後容到變數中

    而我的動作則是,當我要傳送指令給機器時,我就會中斷"第二個"執行緒的動作…
    而我的作法則是用Interrupt,所以問題就是,可能我還在讀取動作時,突然被中斷後,就會出現這個ObjectDisposedException的問題了…
    不過真的是那一行程式所導致的錯誤目前是還沒找到…不過至少現在已經把問題排除了…
    接下來再慢慢來找是什麼可能的原因導致這Exception的發生…
    找到再把問題一起分享給大家…
    終於結束了這一連串的惡夢了…○rz...


    2009年12月9日 上午 06:40