C# thread.join()还会阻止其他客户端吗?
在asp.net web应用程序中,假设每次用户发出请求并加载页面时,都会触发一个线程,该线程使用thread.join()阻止执行,直到完成为止 假设此线程需要10秒才能完成C# thread.join()还会阻止其他客户端吗?,c#,concurrency,multithreading,C#,Concurrency,Multithreading,在asp.net web应用程序中,假设每次用户发出请求并加载页面时,都会触发一个线程,该线程使用thread.join()阻止执行,直到完成为止 假设此线程需要10秒才能完成 这是否意味着如果5个完全不同的用户在此页面上发出请求,仅在最后一个用户之后的毫秒,这是否意味着最后一个用户将等待50秒来完成其请求?或者每个客户端请求都是线程化的?通常,其他用户不会被阻止 但是,对Join的调用会占用线程池线程。一旦所有线程都在使用中,后续请求必须等待线程可用。Join本身只会阻止当前线程,直到要加入的
这是否意味着如果5个完全不同的用户在此页面上发出请求,仅在最后一个用户之后的毫秒,这是否意味着最后一个用户将等待50秒来完成其请求?或者每个客户端请求都是线程化的?通常,其他用户不会被阻止
但是,对
Join
的调用会占用线程池线程。一旦所有线程都在使用中,后续请求必须等待线程可用。Join
本身只会阻止当前线程,直到要加入的线程完成执行,因此通常调用它只会阻止当前请求,而不会阻止其他用户
如果出于某种不正当的原因,您在共享资源的锁内调用
join
,这将阻止其他用户尝试访问共享资源。听起来您描述的场景是,每个用户请求都会创建一个新的线程,该线程在页面加载期间执行任务。页面加载执行一些操作,然后调用thatThread.Join
。如果是这样,那么
5个用户同时访问页面所需的时间在很大程度上取决于线程所做的事情。特别是如果单独生成的线程彼此交互。例如,如果他们在一部分执行中锁定了共享资源,那么是的,同时请求将影响性能。如果在操作期间保持锁定,则是,它可能会对性能产生线性影响
另一方面,如果他们完成完全独立的任务,那么他们不会对性能产生线性影响
如果你能提供更多关于线程正在做什么的细节,我们可以更好地回答这个问题