Asp.net mvc 4 正在调用进程。在Web应用程序上启动线程安全吗?

Asp.net mvc 4 正在调用进程。在Web应用程序上启动线程安全吗?,asp.net-mvc-4,thread-safety,wkhtmltopdf,Asp.net Mvc 4,Thread Safety,Wkhtmltopdf,今天我在一个web应用程序中使用wkhtmltopdf.exe,我想知道是否应该使用锁(或单例模式)以线程安全的方式调用进程。启动 我担心的是,在调用上述exe文件的页面上,多个用户会同时执行GET操作。我的理解是,每个请求都是在自己的线程上创建的,这是否意味着调用exe文件(使用进程.Start)在web应用程序中是线程安全的?进程.Start与线程安全无关。这是一个线程安全调用-您可以从任意多个线程调用任意次数。随之而来的问题是,您依赖于外部流程来完成这项工作。在大量使用的web应用程序中生

今天我在一个web应用程序中使用wkhtmltopdf.exe,我想知道是否应该使用锁(或单例模式)以线程安全的方式调用
进程。启动


我担心的是,在调用上述exe文件的页面上,多个用户会同时执行GET操作。我的理解是,每个请求都是在自己的线程上创建的,这是否意味着调用exe文件(使用
进程.Start
)在web应用程序中是线程安全的?

进程.Start
与线程安全无关。这是一个线程安全调用-您可以从任意多个线程调用任意次数。随之而来的问题是,您依赖于外部流程来完成这项工作。在大量使用的web应用程序中生成多个进程不是一个好主意,因为您将消耗越来越多的资源。所以,虽然如果你的站点没有很大的负载,这可能很好,但如果你希望开始扩展,就不建议这样做


是的,我知道以一种可靠且高效的方式将HTML转换为PDF,这不涉及生成过程,并且对最终结果感到满意需要花费金钱。但是,web应用程序的可扩展性通常是有代价的。

+1我感谢您的回答,只是为了澄清一下。为什么它是线程安全的呢?是因为每个请求都代表一个线程,而这个线程又产生了另一个线程(
Process.Start
)?不是,它只是
Process.Start
方法是线程安全的。当一个方法是线程安全的时,这意味着您可以同时从多个线程并行调用该方法。每个请求代表一个线程,但代表一个进程。Start不会产生新的线程-正如其名称所示,它会产生比线程更重的新进程,它们是线程的容器: