我在观察我的代码中的一些奇怪行为,并试图追踪源代码。我有两个单线程的.net应用程序在同一台机器上运行并向对方发送WCF消息。它们非常简单,有阻塞写入,然后是阻塞读取。我已经注意到,在我的日志中的阻塞呼叫中,99.99%的时间在〜10 ms内读取/写入。但在极少数情况下,可能需要500-2000毫秒。我想明白为什么会这样。我有几个奇怪的怪癖我的应用程序,我跟踪下来,可能是罪魁祸首,但我想知道,这是进入领地里有一些关于我不明白的框架。.net框架在阻塞呼叫期间做了什么?
所以我的问题是这样的,当有一个像一个阻塞调用,并在.NET应用程序开始运行后台进程(如垃圾回收),而执行的主线程被阻塞?
谢谢你的时间。因此,如果您使用的是阻塞调用与否并不重要
垃圾收集可能是罪魁祸首。任何数量的事情都可能导致延误。例如,操作系统可能会将一个或两个线程交换出内存来执行其他操作。或者更高优先级的线程阻止一个或两个线程运行。很难说。你能发布一些代码,以便我们更好地了解你遇到问题的位置吗? – 2011-04-14 21:35:05