问题标签 [threadstatic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
232 浏览

.net - 我可以(安全地)在 ADO.NET 数据服务中使用 ThreadStatic 属性吗?

我想将每线程数据存储在 ADO.NET 数据服务中。在我的线程特定的静态变量上使用 ThreadStatic 属性是否安全,或者我会遇到问题?我担心的是,在请求完成并且线程死亡后,我的 ThreadStatic 变量不会被垃圾收集。

如果有更好的方法来做我想做的事情,请告诉我。这似乎是最简单的解决方案。

任何信息都会非常有帮助,谢谢!

0 投票
2 回答
732 浏览

thread-safety - BizTalk 映射器和 [ThreadStatic] 属性

我最近遇到了 BizTalk Mapper 的多线程特性以及它如何处理外部程序集的问题。

正如 MSDN 的引用所表明的那样:

重要 任何编写在外部程序集中用于脚本 functoid 的代码都需要是线程安全的。这是必需的,因为地图的多个实例可以在运行时在压力条件下使用这些 .NET 实例。

Mapper 将重用外部程序集的实例。

在我的团队使用的实用程序程序集中,我们有以下代码:

这导致来自一个文件的存储引用被映射到不同的文件。

我(似乎)通过用[ThreadStatic]

我的问题是 - 有人知道 BizTalk Mapper 中的任何问题吗?我知道[ThreadStatic]由于线程被重用,例如在 Asp.Net 中使用存在问题,但找不到有关 BizTalk 映射器处理线程的方式的文档。

0 投票
1 回答
856 浏览

c# - 在多线程上下文中继承 ThreadStatic 值以在 C#/.NET 中实现动态范围

有没有办法让新生成的线程在其父线程上继承 ThreadStatic 状态(或类似的东西)的值?我想用这个(或类似的东西)来实现“动态范围”的特殊变量,其中包含用于跟踪/记录等的操作/任务上下文信息。这是一种合理的方法,并且可以使它工作吗?

0 投票
1 回答
1597 浏览

asp.net - WCF 请求处理线程敏捷吗?

我看过很多关于 Agile Asp.Net 请求处理方式的文档?我想知道 WCF 请求处理的情况是否相同。我们可以相信启动 Wcf 请求处理的线程会完成它吗?

我正在维护一个 Wcf 应用程序,其中在很多地方都使用了 ThreadStatic 变量。虽然代码有效,但它可靠吗?值得改变还是应该保持原样?

0 投票
2 回答
247 浏览

f# - 这里需要嵌套记忆的东西吗?

众所周知,System.Transactions 将涉及到同一数据库的多个连接的事务升级到 DTC。下面的模块和帮助程序类ConnectionContext旨在通过确保对同一数据库的多个连接请求返回相同的连接对象来防止这种情况。从某种意义上说,这就是记忆,尽管有很多东西被记忆,第二个依赖于第一个。有没有办法在这个模块中隐藏同步和/或可变状态(可能使用记忆),或者可能以更实用的风格重写它?

(通过连接字符串获取连接时没有锁定可能一文不值,因为 Transaction.Current 是ThreadStatic。)

0 投票
1 回答
154 浏览

.net - 有没有一种简单的方法来拥有一个线程局部实例变量?

使用该ThreadStatic属性,我可以拥有一个static类的成员,每个线程都有一个对象实例。这对于使用不保证线程安全实例方法的对象类型(例如,System.Random)实现线程安全非常方便。

不过,它只适用于static会员。是否有任何直接的方法可以将类成员声明为线程局部的,这意味着每个类实例每个线程都有一个对象?

0 投票
3 回答
2255 浏览

c# - C# 线程参数在线程执行期间发生变化 - 为什么?

所以我有一个方法可以获取 List<myObj> 的字典,然后循环遍历字典的键并将每个 List<myObj> 传递给单独的线程。

这是一些代码/伪代码:

问题是在 ProcessList 的执行过程中 myList 参数只是改变了。

在启动线程之前,我已经遍历了列表,然后立即进入了线程,我发现结果有所不同。

我已经通过将 Dictionary 变量设为全局来解决了这个问题(我认为!)。使用 [ThreadStatic] 属性是可能的修复列表中的下一个。

我真正想知道的是,当 myList 对象在 ProcessEntries() 中重新分配时,为什么 myList 对象会在 ProcessList() 中发生变化?这不是两个不同的列表吗?如果默认情况下所有参数传递都是按值传递的,为什么 ProcessList() 函数没有 myList 的本地副本?(可以?)

有没有办法指定您想要将参数传递给线程并且在执行期间不让父线程或其他线程更改它?(这类似于全局变量的 [ThreadSafe] 属性)

0 投票
1 回答
2150 浏览

asp.net - ThreadStatic 成员在每次页面加载时都会失去价值

我在 asp.net Web 应用程序中有 veeeeryyy 基本单例:

通常一切都很好,但是这次在每个页面加载时 _Instance 都是空的。

此外,当我尝试在标记为 ** 的行中观看 _Instance 时,我遇到了非常奇怪的错误:

无法获取字段“_Instance”的值,因为有关包含类的信息不可用。

什么可以让这个类上传?

0 投票
2 回答
8161 浏览

.net - ThreadStatic 与 ThreadLocal性能:加速还是替代方案?

我最近阅读了这篇关于标记为 ThreadStatic 的字段性能不佳的帖子——它们显然比正常的字段访问慢 60 倍。.NET 4 的 ThreadLocal< T > 性能更好吗?

有没有提供高性能线程特定存储的替代方案?

0 投票
1 回答
1250 浏览

c# - 可以自动处置 ThreadStatic IDisposable 吗?

这不是如何自动调用 dispose 的问题——我的问题恰恰相反:我有一个线程池,其中每个线程都有一个 ThreadStatic Graphics(它是从图像创建的)来执行文本大小测量。现在我遇到了一个问题,即使读取 TextRenderingHint 属性也会失败(导致 ArgumentException),有时图形似乎已被处理。

是否有一些机制可以处理图形,例如如果线程长时间空闲?