问题标签 [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 投票
3 回答
3250 浏览

java - Lots of ThreadLocalMap entries in memory

Consider a very large Java VM with a great many threads running a web server.

Now consider a sample of the output generated by jmap -histo that looks something like this:

If you do the division, it turns out we have 256 instances of java.lang.ThreadLocal$ThreadLocalMap$Entry per thread. Kind of a high number, and more than I'd expect given that most of the ThreadLocals shouldn't be storing a whole lot of values. I don't see that many in Tomcat when I use its ThreadLocal-leak-detection feature.

Any reason these ThreadLocalMaps should be so memory-hungry?

0 投票
2 回答
461 浏览

google-app-engine - 在 Google App Engine 上部署时将数据存储在静态字段中是否是线程安全的?

我正在浏览Vosao CMS的代码,这是一个托管在 Google App Engine 上的开源 CMS(我认为这是一个很棒的想法),我偶然发现了CurrentUser类中的以下代码:

我从未使用过 GAE,但这对我来说听起来很奇怪。

  • GAE真的是“单线程”吗?使用 GAE 时将请求范围的数据存储在静态字段中是否安全?

  • 这是否意味着,对于每个 JVM 实例,一次只会执行一个HTTP 请求,而所有其他请求都在等待?

  • 这是一个常见的 GAE 习语吗?如果不是,那么在请求期间存储此类 UserEntity 的最佳 GAE 习语是什么?不应该像在 Spring Security 中那样使用 ThreadLocal 吗?还是某种范围的 bean(由依赖注入容器管理)?

0 投票
2 回答
6557 浏览

c++ - “此目标不支持线程本地存储”,合适的#ifdef?

由于每个编译器都有自己的线程本地存储版本,我最终为它创建了一个宏。现在唯一的问题是 GCC(关闭了 pthreads),这给了我:

“此目标不支持线程本地存储”

很公平,因为在这种情况下 pthreads 实际上是关闭的。问题是,是否有一种通用的方法可以使用一些宏来检测这一点,例如 #ifdef __GCC_XXX_NO_THREADS_XXX ?

编辑:请参阅下面接受的答案。另外,这是我的懒惰解决方案:

这是在 Mac OS X 上。我不确定它是便携的还是其他的......

0 投票
1 回答
287 浏览

unix - ThreadLocal 聚合和任务并行库

为什么我在以下代码段中得到不同的结果

代码示例 1

样品 2

0 投票
1 回答
1525 浏览

python - Python 中的线程局部变量 - 关于可扩展性的负面因素?

我想知道是否有一些严重的影响我可能会通过使用线程本地人为自己创造。我注意到在 Flask 的情况下,他们使用 thread locals,并提到它可能会导致没有考虑线程构建的服务器出现问题。这是一个过时的担忧吗?我在 Django 中使用线程局部变量做一些事情,在 UWSGI 或 Gunicorn 前面使用 NGINX 部署,在带有 Postgres 的 Ubuntu 10.04 上(不是操作系统或数据库可能很重要,只是为了清楚起见)。我需要担心吗?

0 投票
3 回答
3443 浏览

java - Java - 如何在 Eclipse 中检查“ThreadLocal”变量的值?

ThreadLocal我的网络应用程序中填充了几个s。而且,在远程调试 webapp 时,我想查看这些ThreadLocal变量的值Eclipse(就像Eclipse在 Debug 透视图中的变量选项卡中显示其他变量的方式一样)。

知道如何ThreadLocal在调试期间查看变量的值Eclipse吗?

谢谢!

0 投票
1 回答
197 浏览

java - 询问线程、数组和缓存内存

我希望以一种好的方式:-) 我写了这段代码。我想做的是构建类似“缓存”的东西。我假设我必须注意不同的线程,因为可能有很多调用会到达那个类,所以我尝试了 ThreadLocal 功能。基本模式是有“许多向量集”向量包含如下内容: VECTOR.FieldName = "X" VECTOR.FieldValue= "Y" 集合中有这么多向量对象。针对来自不同机器、用户、对象的不同调用的不同设置。

所以......我在附件中有它,我像这样使用它:

好的部分:Bufferedline 是基于数据文件的一些分隔符的分割线。文件可以是任意大小。

那么你怎么看这段代码呢?我应该担心吗?对于这条消息的大小,我深表歉意!

0 投票
3 回答
1727 浏览

java - 在 EJB3 中使用 ThreadLocal 变量的固有危险?

我正在通过将主题类存储在 ThreadLocal 映射中来试验授权和身份验证的解决方案。该设计是针对 API 的,因此我无法访问所涉及的 servlet,并且我需要使用 EJB3(因此CDI不是一个选项)。我有几个关于在 EJB3 中使用 ThreadLocal 的问题

  1. 假设每个请求在完成后都会清理其 ThreadLocal 映射,那么将 ThreadLocal 变量与无状态会话 bean 一起使用是否有任何风险?换句话说,是否存在两个请求同时访问同一个线程的风险?

  2. 有没有办法强制 servlet 在完成后清理 ThreadLocal?我研究过拦截器,但我了解到它们在 EJB3 中的工作很差,并且在不同的应用程序服务器中工作得也不尽相同。还有什么办法吗?

0 投票
1 回答
349 浏览

java - ThreadLocal - 如果我们在构造函数中设置值是否需要?

我有一个类 MyThread,它实现了 Callable <String>。该类有一个构造函数,它接受阻塞队列等参数。在我的主类中,我使用新的阻塞队列和其他参数来实例化这个类 MyThread。另外,我维护了两个映射,一个用于保持 MyThread 引用,其中一个唯一参数作为键,另一个用于保持阻塞队列引用具有相同的唯一键。

在此过程中,我从 hashmap 中获取这个阻塞队列,添加我的自定义消息并获取相应的 MyThread 实例并提交给 ThreadPoolTask​​Executor(Spring 版本)。

据我了解,每个线程都应该获得自己的值副本(如阻塞队列等),就像在构造过程中传递它们并稍后使用 ThreadPoolTask​​Executor.submit(myThreadObj) 创建线程一样。我只是想知道是否有人可以确认这是否属实,或者我是否需要在这种情况下使用 ThreadLocal。到目前为止测试,我没有遇到问题,但是我还没有做负载测试。

提前致谢。

0 投票
2 回答
947 浏览

c# - 使用 ThreadLocal 使线程安全成为普通类

我有一个设计为由单个线程访问的普通类,我想让它有thread-safe这么多线程可以同时使用一个实例。有一些类级别的方法和变量,我将它们设为静态并使用locks它们thread-safe。默认情况下,使用局部变量的方法也是安全的(每个线程都有它的堆栈)。

properties对旧班级或更一般地任何non-static变量的疑问。我可以简单地使用ThreadLocal<T>并且每个线程都有自己的一组properties吗?我肯定会在里面使用locks和其他thread-safety问题setters(我认为getters是安全的)。

ThreadLocal<T>性能杀手吗?