问题标签 [thread-local]

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 投票
4 回答
3556 浏览

java - 为什么 java.lang.ThreadLocal 是 Thread 上的映射而不是 ThreadLocal 上的映射?

天真地,我期望 ThreadLocal 是某种 Thread 到值类型的 WeakHashMap。所以当我得知 ThreadLocal 的值实际上保存在 Thread 的映射中时,我有点困惑。为什么这样做?如果值保存在 ThreadLocal 本身中,我希望不会存在与 ThreadLocal 相关的资源泄漏。

澄清:我在想类似的东西

据我所见,这将防止奇怪的问题,即如果值以某种方式强烈引用 ThreadLocal 本身,则 ThreadLocal 及其剩余值都不会被垃圾收集,直到 Thread 死亡。(当 ThreadLocal 是值所引用的类上的静态变量时,可能会发生这种情况的最狡猾的形式。现在,由于无法收集对象及其类,因此在应用程序服务器中重新部署时会出现大量资源泄漏。)

0 投票
2 回答
285 浏览

java - ThreadLocals 难以使用

我正在使用ThreadLocal变量(通过 Clojure 的 vars,但以下内容与ThreadLocalJava 中的普通 s 相同)并且经常遇到我无法确定某个代码路径将在同一个线程上或上采用的问题另一个线程。对于我控制下的代码,这显然不是什么大问题,但对于多态第三方代码,有时甚至没有办法静态确定假设单线程执行是否安全。

我倾向于认为这是ThreadLocals 的固有问题,但我想听听一些关于如何以安全方式使用它们的建议。

0 投票
1 回答
1066 浏览

django - 在线程本地字典中放置 django 请求对象有什么危害吗?

我有一些自定义render_to_response方法现在需要请求对象,我可以将请求传递给它们中的每一个,但是我将请求对象保存在中间件中以线程本地空间并在其他地方访问它,它会影响我吗?

0 投票
5 回答
5065 浏览

python - threadlocals 有什么不好

Django 世界中的每个人似乎都讨厌 threadlocals http://code.djangoproject.com/ticket/4280,http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser)。我阅读了 Armin 关于此的文章(http://lucumr.pocoo.org/2006/7/10/why-i-cant-stand-threadlocal-and-others),但其中大部分取决于 threadlocals 是不好的,因为它是不雅。

我有一个场景,theadlocals 会让事情变得更容易。(我有一个应用程序,人们将拥有子域,因此所有模型都需要访问当前子域,并且从请求中传递它们是不值得的,如果 threadlocals 的唯一问题是它们不优雅,或者变得脆弱代码。)

还有很多 Java 框架似乎大量使用 threadlocals,那么它们的情况与 Python/Django 的情况有何不同?

0 投票
1 回答
518 浏览

multithreading - 线程本地,类实例本地存储?

有没有一种很好的、​​与平台无关的方法来实现一个对线程和类实例都是本地的变量,即如果你有 T 线程和 I 类实例,你有那个变量的 TxI 实例?我使用的是 D 编程语言,版本 2,但一个与语言无关的良好答案也会很有用。

以下是一些限制条件:

  1. 绝不能要求同步。这排除了将哈希表映射到作为成员变量的变量引用的线程 ID。
  2. 不能保留应该被垃圾收集的引用。这排除了由类实例索引的线程本地静态哈希表。
  3. 为了效率,初始化应该是惰性的。如果线程从不访问给定实例的变量,则永远不应该创建它。
0 投票
1 回答
6246 浏览

java - 私有静态最终实例的线程本地行为

嗨,我有这样的类定义

我在其他一些类1中这样做

现在我在class2做这个

现在我有点困惑,我知道 class1 的事情会发生,因为我设置了 dontIntercept ThreadLocal。我的疑问是class2的东西是否会发生?我的逻辑是我只有一个 JdbcInterceptor 实例,因此在所有对 interrupt() 的调用中都应该有相同的状态。但有人告诉我 ThreadLocals 对于每个线程都是本地的。我在这里看到了一些冲突。请帮助我。

0 投票
6 回答
8843 浏览

java - 实例级线程本地存储有哪些优势?

这个问题让我想知道Java 和 .NET 等高级开发框架中的线程本地存储。

Java 有一个ThreadLocal<T>类(可能还有其他结构),而 .NET 有数据槽,很快就会有ThreadLocal<T>自己的类。(它也有ThreadStaticAttribute,但我对成员数据的线程本地存储特别感兴趣。)大多数其他现代开发环境在语言或框架级别为它提供了一种或多种机制。

线程本地存储解决了哪些问题,或者线程本地存储相对于创建单独的对象实例以包含线程本地数据的标准面向对象惯用语提供了哪些优势?换句话说,这是怎么回事:

优于这个?

我可以看到,使用具有线程本地存储的单个对象可能会稍微提高内存效率,并且由于分配(和构造)更少,因此需要更少的处理器资源。还有其他优点吗?

0 投票
4 回答
446 浏览

java - 将JDK1.5 ThreadLocal代码移植到JDK1.4

我有以下在JDK5上运行的代码

我希望在 JDK1.4 上运行它。请告知需要进行哪些更改

0 投票
5 回答
898 浏览

c++ - 使用ACE时有没有办法使用线程局部变量?

我正在使用 ACE 线程,并且需要每个线程都有自己的 int 成员。那可能吗?

0 投票
4 回答
1406 浏览

c++ - C++ 异常是否足以实现线程本地存储?

我正在评论一个线程本地存储很好的答案,并回忆起另一个关于我认为的异常的信息性讨论

throw 块中的执行环境唯一的特殊之处是异常对象被 rethrow 引用。

将两个和两个放在一起,不会在其主函数的函数捕获块内执行整个线程,并为其注入线程本地存储吗?

它似乎工作正常,虽然速度很慢。这本小说还是有特色的?是否有另一种解决问题的方法?我最初的前提是正确的吗?get_thread您的平台会产生什么样的开销?优化的潜力是什么?

这确实需要定义从 派生的新异常类thread_exception_base,用 初始化基类get_thread(),但总的来说,这不像是周日早上失眠的低效……</p>

编辑:看起来 GCC对in进行了三个调用。编辑:对堆栈、环境和可执行格式进行了大量令人讨厌的内省,以找到我在第一次演练中错过的块。这看起来高度依赖于平台,因为 GCC 正在从操作系统调用一些。大约 4000 个周期的开销。我想它还必须遍历类层次结构,但这可以保持在控制之下。pthread_getspecificget_threadcatchlibunwind