可以同时从多个线程调用单个对象的方法吗?

Kri*_*s82 5 .net c#

我在Castle Windsor注册了一个组件作为单身人士.这个对象正在我的应用程序中的许多其他地方使用,这是多线程的.

是否有可能两个对象同时从该单例调用相同的方法,或者"调用它"将被阻塞,直到前一个对象得到结果?

谢谢

Sha*_*ngh 5

您可以同时从不同的线程调用Singleton对象方法,如果没有锁定/同步代码,则不会阻止它们.线程不会等待其他人处理结果,并且会执行方法,因为它们会在单独的对象上执行方法.这是因为每个线程都有一个单独的堆栈并具有不同的局部变量集.该方法的其余部分仅描述了需要对包含变量/字段的数据执行的操作的过程.

您可能想要关注的是Singleton对象上的方法是否访问任何静态方法或字段/变量.在这种情况下,您可能需要处理它的同步部分.您需要确保对共享资源的多线程访问才能使方法的执行可靠.

为了能够同步,您可能需要使用lock语句或其他形式的线程同步技术.

您可能希望参考Wikipedia上的这篇文章,该文章也提供了有关C#线程本地存储的信息.