我在觀察我的代碼中的一些奇怪行爲,並試圖追蹤源代碼。我有兩個單線程的.net應用程序在同一臺機器上運行並向對方發送WCF消息。它們非常簡單,有阻塞寫入,然後是阻塞讀取。我已經注意到,在我的日誌中的阻塞呼叫中,99.99%的時間在〜10 ms內讀取/寫入。但在極少數情況下,可能需要500-2000毫秒。我想明白爲什麼會這樣。我有幾個奇怪的怪癖我的應用程序,我跟蹤下來,可能是罪魁禍首,但我想知道,這是進入領地裏有一些關於我不明白的框架。.net框架在阻塞呼叫期間做了什麼?
所以我的問題是這樣的,當有一個像一個阻塞調用,並在.NET應用程序開始運行後臺進程(如垃圾回收),而執行的主線程被阻塞?
謝謝你的時間。因此,如果您使用的是阻塞調用與否並不重要
垃圾收集可能是罪魁禍首。任何數量的事情都可能導致延誤。例如,操作系統可能會將一個或兩個線程交換出內存來執行其他操作。或者更高優先級的線程阻止一個或兩個線程運行。很難說。你能發佈一些代碼,以便我們更好地瞭解你遇到問題的位置嗎? – 2011-04-14 21:35:05