.Net 在WEB程序中使用 ThreadStatic其实还是会出现静态变量公用的情况

时间:2021-07-30 00:39:29
[ThreadStatic]可以标注某个静态字段为每个线程提供独立的存储,单在实际应用中,我发现被标注[ThreadStatic]的静态变量还是可以被其他线程公用,这个问题怎么解决?在网上我也搜了类似的帖子,有人说是“线程池中的线程是可以被重用的,当你的请求结束后,当前线程结束,这时,其它客户端可能用你上次的线程!”,有没有高手给指点一下呢?怎么能不让重用之前的线程呢?

3 个解决方案

#1


关于“新城池中线程”的问题是很自然的、我们为了性能而特意希望去重用线程的。不要本末倒置地去说什么“怎样不让重用之前的线程呢?”这类问题。

不要用过于诡异的特性,用“正”的经过千锤百炼的,不就行了嘛。

#2


新城池中线程   -->   线程池中线程

你可以看到,所谓 ThreadStatic 给你找了麻烦,然后你又去找“线程中的线程”的麻烦,这就是恶性循环。遇到这种情况,选择比较“正”的编程原则,放弃.net 中的一些糟粕,就可以了。

#3


你可以看到,所谓 ThreadStatic 给你找了麻烦,然后你又去找“线程池中的线程”的麻烦,这就是恶性循环。遇到这种情况,选择比较“正”的编程原则,放弃.net 中的一些糟粕(也就是放弃什么 TrheadStatic),就可以了。

#1


关于“新城池中线程”的问题是很自然的、我们为了性能而特意希望去重用线程的。不要本末倒置地去说什么“怎样不让重用之前的线程呢?”这类问题。

不要用过于诡异的特性,用“正”的经过千锤百炼的,不就行了嘛。

#2


新城池中线程   -->   线程池中线程

你可以看到,所谓 ThreadStatic 给你找了麻烦,然后你又去找“线程中的线程”的麻烦,这就是恶性循环。遇到这种情况,选择比较“正”的编程原则,放弃.net 中的一些糟粕,就可以了。

#3


你可以看到,所谓 ThreadStatic 给你找了麻烦,然后你又去找“线程池中的线程”的麻烦,这就是恶性循环。遇到这种情况,选择比较“正”的编程原则,放弃.net 中的一些糟粕(也就是放弃什么 TrheadStatic),就可以了。