标签: thread-local

ThreadLocals的效果和并行类加载

假设

class A{
         private static final ThreadLocal<String> tl = new ThreadLocal<String>();
}
Run Code Online (Sandbox Code Playgroud)

如果A只在vm上的一个类加载器中加载,则t1的值很明显.但是如果A在两个不同的类加载器中并排加载,t1会发生什么?是否会为给定的线程共享该值?

java classloader thread-local

5
推荐指数
1
解决办法
1831
查看次数

为什么我们会在春天使用自定义范围?什么时候需要?

任何人都可以帮助我理解自定义范围.我通过手册和许多在线示例,了解它是如何实现的.但是,我仍然不清楚为什么我们需要一个自定义代理,以及我们为什么会这样做,限制bean的范围.

据我所知,对于单例 - 当我们想要将单个bean赋予所有引用时我们使用单例,并且当我们希望每次引用bean时都给出新引用时我们使用原型.

现在我对自定义范围的理解是
自定义范围 - 我们使用自定义范围作为两者之间的中间点,我们既不想传递单个引用也不是每次都有新引用... 但是它更接近我们所在的单例每次都传递相同的bean,只是从我们的首选位置(例如底层的threadlocal或map).

请帮我把我的概念弄清楚..这里的主要问题是为什么自定义范围?并且当需要它?

java spring scope thread-local

5
推荐指数
1
解决办法
1277
查看次数

在linux内核模块中线程化本地数据

是否可以在Linux内核模块中创建线程本地数据?

我需要为调用我的模块的每个进程/线程存储一些数据.是否有一种使用线程本地数据的简单方法,或者我是否必须编写使用当前进程的pid作为键的哈希映射?

c module thread-local linux-kernel

5
推荐指数
1
解决办法
605
查看次数

ThreadLocal性能与使用参数

我目前正在为公式语言实现运行时(即函数集合).有些公式需要传递给它们的上下文,我创建了一个名为EvaluationContext的类,它包含我在运行时需要访问的所有属性.

使用ThreadLocal<EvaluationContext>似乎是一个很好的选择,使这个上下文可用于运行时函数.另一种选择是将上下文作为参数传递给需要它的函数.

我更喜欢使用ThreadLocal,但我想知道是否存在任何性能损失,而不是通过方法参数传递评估上下文.

.net c# multithreading thread-local

5
推荐指数
1
解决办法
2341
查看次数

如果没有清除ThreadLocal变量,会发生什么?

在类中定义了一个threadlocal变量来维护一些实例.设置和获取递归方法.有些我无法在请求完成时清除threadlocal变量(我已经用其他所有方式进行了分析.我无法清除threadlocal).

我的问题是,如果我没有为每个请求清除threadlocal变量,会发生什么?有什么影响?

java thread-local

5
推荐指数
2
解决办法
2241
查看次数

绑定和pmap交互改变?

有几个老有所博客帖子混合动态变量时,在那里建议谨慎binding,并且pmap,如在这里,我们得到了下面的代码片段:

user=> (def *foo* 5)
#'user/*foo*
user=> (defn adder
             [param]
             (+ *foo* param))
#'user/adder
user=> (binding [*foo* 10]
         (doseq [v (pmap adder (repeat 3 5))]
           (println v)))
10
10
10
nil
Run Code Online (Sandbox Code Playgroud)

但是,当我运行该代码(将第一行更改为(def ^:dynamic *foo* 5))时,不会发生这种情况.我得到三个15s作为输出(使用Clojure 1.4),就像你天真期望的那样 - 也就是说,传递给pmap的函数看到的绑定形式的变化.线程局部绑定和pmap交互的方式有变化吗?我无法在任何地方找到这个记录.

binding clojure thread-local pmap dynamic-variables

5
推荐指数
1
解决办法
241
查看次数

模型内的金字塔事件

我正在使用Pyramid 1.4.我想从我的模型类中生成一些自定义Pyramid事件.事件生成如下:

request.registry.notify(MyCustomEventType("Here it comes"))
Run Code Online (Sandbox Code Playgroud)

如您所见,我需要访问应用程序注册表.我知道get_current_registry()功能.但我也很关注Pyramid网站上的评论:

"这个功能应该非常谨慎地使用,通常只在单元测试代码中使用"

问题:

  • 从数据层生成Pyramid事件(SQLAlchemy模型)一般是个坏主意吗?
  • 如果没有,如何以更文明的方式访问应用程序注册表?(Base或许扩展模型?)
  • 如果,是否有一些我可以使用的替代品.我知道SQLAlchemy事件,但我找不到生成自定义事件的能力.

理由:

基本上,我将我的应用程序划分为功能,并尝试将它们分离.为此,我有时需要IoC:我计划将事件作为一种手段.例如,每当用户回答问题时,都会发出事件.然后,可以在应用程序的其他部分订阅这样的事件.我喜欢将应用程序逻辑保留在模型中而不是视图中.因此,所描述的问题.

python events sqlalchemy thread-local pyramid

5
推荐指数
1
解决办法
231
查看次数

如何从Java servlet Web容器中正确实现RabbitMQ RPC?

我想传入的Java Servlet的Web请求使用所描述的RPC调用方法RabbitMQ的位置.

但是,我不确定如何在请求之间正确地重用回调队列,因为根据上面链接的RabbitMQ教程为每个请求创建一个新的回调队列是低效的(即使使用Queue TTL功能, RabbitMQ也可能无法应对).

每个servlet请求通常只有1-2个RPC调用,但显然每秒有很多servlet请求.

我不认为我可以在线程之间共享回调队列,所以我希望每个Web工作线程至少有一个.

我的第一个想法是将回调队列存储在ThreadLocal中,但这可能导致内存泄漏.

我的第二个想法是将它们存储在会话中,但我不确定它们是否会正确序列化,并且我的会话当前没有在Web服务器之间复制/共享,因此恕我直言不是一个好的解决方案.

我的基础设施是Tomcat/Guice/Stripes Framework.

任何想法最强大/最简单的解决方案是什么?

我是否在这整个方法中遗漏了什么,从而使事情过于复杂?

注1 - 此问题与此处描述的整体业务案例有关- 请参阅选项1.

注2 - 有一个看似相关的问题如何在Web上下文中设置RabbitMQ RPC,但它主要关注正确关闭RabbitMQ客户端创建的线程.

java multithreading servlets thread-local rabbitmq

5
推荐指数
0
解决办法
774
查看次数

将C++ 11 thread_local与其他并行库一起使用

我有一个简单的问题,C++ 11 thread_local可以与其他并行模型一起使用.

例如,我可以在使用OpenMP或Intel TBB并行执行任务时在函数内使用它.

大多数此类并行编程模型隐藏了更高级API背后的硬件线程.我的直觉是他们都必须将他们的任务调度程序映射到硬件线程中.我能指望C++ 11 thread_local会产生预期的效果吗?

一个简单的例子是,

void func ()
{
    static thread_local some_var = init_val;
#pragma omp parallel for [... clauses ...]
    for (int i = 0; i < N; ++i) {
        // access some_var somewhere within the loop
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以期望每个OpenMP线程都可以访问自己的副本some_var吗?

我知道大多数并行编程模型都有自己的线程局部存储结构.但是,能够使用C++ 11 thread_local(或编译器特定的关键字)是很好的.例如,考虑一下情况

// actually may implemented with a class with operator()
void func ()
{
     static thread_local some_var;
     // a quite complex function
}

void func_omp (int …
Run Code Online (Sandbox Code Playgroud)

tbb openmp thread-safety thread-local c++11

5
推荐指数
1
解决办法
1557
查看次数

Java - ThreadLocal与ConcurrentHashMap

关于ThreadLocal和之间的性能差异,我有一个非常简单的问题ConcurrentHashMap.在我的代码中的某些地方,我需要维护从a Thread到some 的映射Object,这必须是线程安全的.一种选择是使用ConcurrentHashMap,一种是使用ThreadLocal.这些方法的任何优点/缺点,主要是在速度方面?

java concurrency concurrenthashmap thread-local

5
推荐指数
1
解决办法
1533
查看次数