问题标签 [thread-static]

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 投票
1 回答
2890 浏览

c# - ThreadStatic 对象的确定性处理

ThreadStatic 属性将静态变量声明为每个线程唯一。您知道正确处理此类变量的简单模式吗?

我们在 ThreadStatic 之前使用的是 ThreadContextManager。每个线程都被分配了一个 ThreadContext,它保留了所有线程特定的信息。我们产生了一些线程并让它们工作。然后,当它们都完成后,我们释放了 ThreadContentManager,如果它们是 IDisposable,它会依次释放所有上下文。

我看不到将这种模式转换为 ThreadStatic 对象的直接方法。这些对象最终会被处理掉,因为线程死掉了,所以没有任何东西引用它们。但是,我们尽可能倾向于确定性处置。

更新

我并没有真正直接控制线程——我使用的是 Microsoft CCR,它有一个执行任务的 ThreadPool。完成所有任务后,我将处理 Dispatcher(它包含线程池)。问题是 - 我没有机会“在线程的主要功能结束时”做任何事情 - 所以我不能在线程运行结束时手动处理事情。我可以以某种方式从线程外部访问线程的静态对象吗?

0 投票
4 回答
1122 浏览

.net - .NET 中异步操作的线程静态变量

有没有办法让 ThreadStatic 变量从一个线程转移到另一个线程?我有一堆 ThreadStatic 变量,现在我将我的操作转换为异步的,我希望能够将它们从第一个线程(设置它们的位置)“传输”到回调线程(读取它们的位置) )。这可能吗?

0 投票
2 回答
575 浏览

c# - 寻求一种万能的基于上下文的存储

首先,我希望基于上下文的存储在整个框架中是一致的!

话虽如此,我正在寻找一种优雅的解决方案,以使这些属性在 ASP.NET、WCF 和任何其他多线程 .NET 代码中安全。这些属性位于一些低级跟踪助手中(如果您想知道为什么它们是内部的,这些属性会通过方法公开)。

我宁愿不依赖于不需要的程序集(如 System.Web 等)。我不想要求任何人使用此代码来配置任何东西。我只是想让它工作;)虽然这可能太高了......

有人有什么技巧吗?(我看过 Spring 的实现)

更新

我所说的安全并不是同步的。关于这个问题的背景在这里

0 投票
2 回答
3974 浏览

.net - 通过 ThreadPool 循环时,我的 ThreadStatic 变量中的值是否仍然存在?

我正在使用 ThreadStatic 变量来存储一些数据,但我担心我存储在线程上的数据在我完成并释放回 ThreadPool 后仍然存在。在完成线程之前,我是否需要担心清除我的 ThreadStatic 变量?或者 ThreadPool 会在为下一个 QueueUserWorkItem “传递出去”之前为我做这件事吗?这对我来说尤其重要,因为我需要确保我的应用程序中的其他线程在 ThreadStatic 变量方面具有干净的工作状态。谢谢!

0 投票
3 回答
13825 浏览

c# - 用静态 C# 修改的 ThreadStatic

我有一些代码在 C# 中使用线程静态对象。

我想知道,在这种情况下,如果我将 static 修饰符放在线程静态上下文中,我会得到什么改变?

第一个是否每个线程每个实例都有一个上下文副本,而另一个每个线程只有一个副本?

0 投票
2 回答
2486 浏览

multithreading - 这是初始化 [ThreadStatic] 的线程安全方式吗?

之前的代码线程安全吗?还是我们需要锁定方法?

0 投票
5 回答
15237 浏览

java - Java 的 ThreadLocal 是如何在底层实现的?

ThreadLocal 是如何实现的?它是用 Java 实现的(使用一些从 ThreadID 到对象的并发映射),还是使用一些 JVM 挂钩来更有效地完成它?

0 投票
2 回答
1199 浏览

.net - 使用具有 ThreadStatic 属性的并行扩展。它会泄漏内存吗?

我正在大量使用并行扩展,并且我刚刚遇到了一种情况,即使用线程本地存储可能是明智的,以允许工作线程重用对象。因此,我正在查看 ThreadStatic 属性,该属性将静态字段/变量标记为每个线程具有唯一值。

在我看来,在不保证 PE 重用线程的情况下使用带有 ThreadStatic 属性的 PE 是不明智的。也就是说,如果线程在某种程度上被创建和销毁,变量(以及它们指向的对象)是否会在线程本地存储中保留一段不确定的时间,从而导致内存泄漏?或者也许线程存储与线程绑定并在线程被处理时被处理?但是,您仍然可能在池中拥有长期存在的线程,并且从线程用于的各种代码中积累线程本地存储。

有没有更好的方法来使用 PE 获取线程本地存储?

谢谢你。

0 投票
2 回答
100 浏览

c# - 为什么我在以下 C# 代码中得到 NullReferenceException?

我有以下测试程序,其中我使用了一个ThreadStatic变量,当我尝试此代码时,我得到一个NullReferenceException.

谁能解释一下吗?