Vb.net 共享方法可以是多线程的吗?

Vb.net 共享方法可以是多线程的吗?,vb.net,multithreading,Vb.net,Multithreading,如问题所述,对象的共享方法可以是多线程的吗?我的技能还不太成熟,否则我会考验自己。另一方面,我参与设计类,该类可能是VB.Net中多线程应用程序的一部分。是的,它可以。任何方法都可以成为线程。如果您的意思是“一次从多个线程调用共享方法是否安全”,答案是“这取决于”。方法本身不是多线程或单线程的;线程和方法是非常独立的东西 如果共享方法是从多个线程调用的,那么除非有任何同步需要说明,否则它将在这些线程上并发执行。如果您的方法在没有适当保护措施的情况下使用共享状态,那么这肯定会导致问题。但是,如果该

如问题所述,对象的共享方法可以是多线程的吗?我的技能还不太成熟,否则我会考验自己。另一方面,我参与设计类,该类可能是VB.Net中多线程应用程序的一部分。

是的,它可以。任何方法都可以成为线程。

如果您的意思是“一次从多个线程调用共享方法是否安全”,答案是“这取决于”。方法本身不是多线程或单线程的;线程和方法是非常独立的东西


如果共享方法是从多个线程调用的,那么除非有任何同步需要说明,否则它将在这些线程上并发执行。如果您的方法在没有适当保护措施的情况下使用共享状态,那么这肯定会导致问题。但是,如果该方法在访问共享资源(例如,使用锁)时很小心,或者它不访问线程之间共享的任何状态,则可以。

是,共享方法可以由多个线程同时执行事实上,它们通常是。与实例方法相比,您对哪些线程正在执行共享方法没有太多的控制权。例如,考虑ASP.NET应用程序。不同的页面请求可能会出现在不同的线程中。如果您在web应用程序中调用共享方法,那么它很可能被多个线程执行

这是设计API时非常重要的一点。所有自尊的API作者都会走极端,以确保所有共享/静态方法都是线程安全的。毕竟,让API的调用者同步访问您提供的每一个共享/静态方法将是非常麻烦的。请查看Microsoft为BCL中几乎所有类提供的文档

此类型的任何公共静态(在Visual Basic中共享)成员都是 线程安全。不保证任何实例成员都是线程 安全的

我还没有遇到过由Microsoft提供的一个非线程安全的静态方法。1这很好,因为它使您和我的生活更轻松



1如果您知道一个,请告诉我。

@hydroparadise:是的。它们将分别执行。如果您设计的类可能是多线程应用程序的一部分,那么现在可能是将线程技术引入您的技能集中的时候了?是的,我同意。我喜欢你被要求学习你感兴趣的东西的机会。这恰好是其中一个机会:)很高兴了解共享状态。我们信任乔恩·斯基特