thread-local相关内容

如何确保我不会同时在两个线程之间共享同一个套接字?

我有一个处理套接字的代码,我需要确保我不会在两个线程之间共享同一个套接字.在下面的代码中,我有一个后台线程,它每 60 秒运行一次并调用 updateLiveSockets() 方法.在 updateLiveSockets() 方法中,我迭代了我拥有的所有套接字,然后通过调用 SendToQueue 类的 send 方法开始一个一个地 ping 它们并根据回复,我将它们标记为活的或死的. 现 ..

ThreadStatic 与 ThreadStatic 对比ThreadLocal<T>:泛型比属性好吗?

[ThreadStatic] 使用属性定义,而 ThreadLocal 使用泛型.为什么选择不同的设计解决方案?在这种情况下使用泛型优于属性有什么优缺点? 解决方案 评论中提到的博客文章没有明确说明,但我发现非常重要的是,[ThreadStatic] 不会自动为每个线程初始化事物.例如,假设你有这个: [ThreadStatic]私有静态 int Foo = 42; 使用它的第一 ..
发布时间:2022-01-13 17:42:43 C#/.NET

Clojure 中的线程本地计数器

我有一个网络应用程序,我希望能够跟踪在请求(即线程)中调用给定函数的次数. 我知道可以使用 ref 以非线程本地方式进行操作,但是我将如何在本地进行线程操作? 解决方案 有用 称为 thread-local.例如,您可以编写 (def counter (thread-local (atom 0))).这将创建一个全局变量,当 deref ed 时,将为每个线程产生一个新的原子.所以你 ..
发布时间:2022-01-02 22:50:57 其他开发

线程本地 &内存泄漏

在多个帖子中提到:ThreadLocal 的不当使用会导致内存泄漏.我正在努力理解使用 ThreadLocal 会如何发生内存泄漏. 我想出的唯一场景如下: 网络服务器维护一个线程池(例如用于 servlet).如果 ThreadLocal 中的变量没有被删除,这些线程可能会造成内存泄漏,因为线程不会死亡. 这个场景没有提到“永久空间"内存泄漏.这是内存泄漏的唯一(主要)用例吗? ..
发布时间:2021-12-30 23:39:18 Java开发

ThreadLocal 在 servlet 中存储 ServletRequest 和 Response:有什么用?

有一次我遇到了一种模式,其中 ServletRequest 和响应对象被放入 servlet 的本地 ThreadLocal 变量.servlet 类还有获取当前请求和响应对象的方法.所以为了得到这些对象,你还是需要对servlet对象进行操作. 拥有这些 ThrealLocal 局部变量有什么意义? 解决方案 重点是在类中包含请求和响应对象,否则它们将不会包含它们(例如它们不是 s ..
发布时间:2021-12-21 11:57:17 Java开发

如何清理 ThreadLocals

有没有人有一个例子如何做到这一点?它们是否由垃圾收集器处理?我使用的是 Tomcat 6. 解决方案 javadoc 是这样说的: "只要线程处于活动状态并且 ThreadLocal 实例可访问,每个线程都持有对其线程局部变量副本的隐式引用;在线程消失后,其线程局部实例的所有副本均受制于到垃圾收集(除非存在对这些副本的其他引用). 如果您的应用程序或(如果您正在谈论请求线程)容 ..
发布时间:2021-12-16 21:14:13 Java开发

ThreadStatic 对比ThreadLocal<T>:泛型优于属性吗?

[ThreadStatic] 使用属性定义,而 ThreadLocal 使用泛型.为什么选择不同的设计解决方案?在这种情况下使用泛型而不是属性有什么优点和缺点? 解决方案 评论中提到的博客文章没有明确说明,但我发现非常重要的是,[ThreadStatic] 不会自动为每个线程初始化东西.例如,假设你有这个: [ThreadStatic]私有静态 int Foo = 42; 使用它的第一 ..
发布时间:2021-12-15 10:10:09 C#/.NET

C++11 中的 thread_local 是什么意思?

我对 C++11 中 thread_local 的描述感到困惑.我的理解是,每个线程在函数中都有唯一的局部变量副本.所有线程都可以访问全局/静态变量(可能使用锁进行同步访问).thread_local 变量对所有线程都是可见的,但只能由为其定义的线程修改?这是正确的吗? 解决方案 线程局部存储持续时间是一个术语,用于指看似全局或静态的存储持续时间(从使用它的函数的角度来看)但在实际上,每个 ..

为什么在 Django 中使用线程局部变量不好?

我使用线程局部变量来存储当前用户和请求对象.这样我就可以从程序中的任何地方(例如动态表单)轻松访问请求,而无需传递它们. 为了在中间件中实现线程本地存储,我遵循了 Django 站点上的教程:https://web.archive.org/web/20091128195932/http://code.djangoproject.com:80/wiki/CookBookThreadlocals ..
发布时间:2021-12-02 19:04:43 Python

何时以及如何使用 ThreadLocal 变量?

我什么时候应该使用 ThreadLocal 变量? 如何使用? 解决方案 一种可能(且常见)的用途是当您有一些不是线程安全的对象,但您想避免 同步对该对象的访问(我在看着你,SimpleDateFormat).相反,为每个线程提供自己的对象实例. 例如: 公共类Foo{//SimpleDateFormat 不是线程安全的,所以给每个线程一个私有静态最终 ThreadLocal ..

在aspectj 类中编写ThreadLocal.remove() 的位置

/*我们正在使用 Aspect 在一些现有应用程序上执行 AOP,我们还使用 threadlocal 来存储 GUId.我们正在使用@Around 注释.在事务开始时,我们使用 initialValue() 方法在事务中设置 GUID. 问题正如我们所知,当我们使用 threadlocal 时,我们还应该注意从 threadlocal 中删除数据,否则可能会导致内存不足执行.如果我在删除它最 ..
发布时间:2021-11-11 04:40:12 Java开发

ThreadLocal 和 SimpleDateFormat 数组

使用与最近的问题中描述的模式非常相似的模式,对于多线程应用程序,我得到了奇怪的日期值(例如,像 2025 或 2035 这样的年份,显然源数据中不存在这样的值).似乎发生了并发问题. 源代码看起来像 //各种 Java DateFormat 模式,例如“yyyy-MM-dd".private static final String[] DATE_PATTERNS = new String[ ..
发布时间:2021-09-07 18:38:49 Java开发

如何在 Rust 结构内创建线程局部变量?

我需要一个线程局部变量,理想情况下存储在一个结构中,该结构当前存储了我程序的大部分全局状态. 我能看到的第一种方法是使用 thread_local! 宏,但是我想将此线程保持在我的状态结构中. 我可以看到的第二种方法是在线程和线程局部变量的值之间使用 HashMap 或类似的方法.然后我会有一个使用 thread::current 来查找适当值的 getter. 我应该提到的最后 ..
发布时间:2021-06-04 20:26:06 其他开发

Python:'thread._local 对象没有属性'todo'

我目前正在使用线程和所有这些编程基于 python 的数据报服务器. 我遇到了以下问题:我使用多个分配线程将传入的包分配给不同的处理线程.在处理线程中,我使用 threading.local() 来跟踪线程局部变量. 我目前正在测试我的服务器在高负载(约 2 秒内 2000 个数据包)期间的反应,并且发现了 local()-Object 的奇怪行为. 它似乎可以正常工作一段时间, ..
发布时间:2021-06-04 20:24:28 Python