问题标签 [thread-safety]

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 投票
6 回答
848 浏览

c# - 锁定自加载缓存

我在 C# 中实现了一个简单的缓存,并试图让它从多个线程中访问。在基本的阅读案例中,这很容易:

我相信这是完全线程安全的。但我也想让它自动加载。也就是说,如果缓存没有在访问时填充,它会在满足访问请求之前填充它。

这不是线程安全的,因为如果另一个线程正在填充它,则线程可以在实例化 cacheB 之后但在它完全填充之前访问 GetCachedObjB。那么在 cacheB 上执行锁定以使缓存是线程安全的最佳方法是什么?

0 投票
2 回答
746 浏览

c# - 请帮我使这个代码线程安全

我在使数据加载和过滤线程安全方面遇到了一些问题。

我的控件基类中的以下代码通过 BackgroundWorker 处理所有数据填充。这往往会在“this.DataWorker.RunWorkerAsync()”上抛出错误,说明 BackgroundWorker 很忙。

代码在两个可能的地方被调用。首先通过控件所在表单上的计时器:

其次,任何时候用户从多个下拉列表中选择过滤器选项:

主窗体上的 Timer 每 60 秒运行一次,并将 true 传递给 Populate 方法。将 reload 作为 true 传递告诉 BackgroundWorker 它需要从 WebService 中拉下一组新数据:

据我所知,当我设法在 Timer 触发填充事件的同时单击过滤器选项时会发生错误。我认为 Populate 方法中缺少一些东西,即锁,但我不确定如何在这种情况下正确使用它。

该代码有利于用户输入。如果用户选择过滤器选项,则应阻止自动更新,如果触发自动更新,则暂时禁用过滤器选项。如果它们同时触发,则用户输入应优先(如果可能)。

希望有人能帮忙!

0 投票
2 回答
2486 浏览

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

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

0 投票
2 回答
609 浏览

java - Java ReentrantReadWriteLock 请求

只是一个关于 Java 中的 ReadWriteLocks(特别是 ReentrantReadWriteLock 实现)的快速问题,因为我没有找到清楚的 sun 文档。

如果一个线程在另一个线程请求写锁时持有读锁会发生什么?写锁线程是否必须等待所有当前持有的读锁被释放?此外,在授予和释放写锁之前,是否所有新的读锁请求都会被阻止?

谢谢

0 投票
6 回答
20808 浏览

c++ - C++ 的线程安全向量类

有谁知道用于 c++ 的快速而肮脏的线程安全向量类?我正在对一些代码进行多线程处理,我相信我遇到的问题与向量的使用方式有关。我计划重写代码,但在我疯狂地重做代码之前,我想用线程安全向量对其进行测试以确保。我还想如果有这样的东西,它会比编写我自己的版本容易得多。

0 投票
2 回答
3231 浏览

python - 静态方法和线程安全

在具有“一切都是对象”的所有这些想法的python中,线程安全在哪里?

我正在用 wsgi 开发 django 网站。它也可以在 linux 中工作,而且我知道他们使用有效的进程管理,所以我们不能考虑线程安全。我不怀疑模块是如何加载的,函数是否是静态的?每个信息都会有所帮助。

0 投票
2 回答
468 浏览

python - 我可以在 Pylons 中将什么附加到 pylons.request?

我想跟踪连接到我的 Web 应用程序的每个浏览器的唯一标识符(用 Pylons 编写)。我在客户端上保留一个 cookie 以跟踪这一点,但如果 cookie 不存在,那么我想要生成一个新的唯一标识符,该标识符将与响应一起发送回客户端,但我也可能希望从用于生成响应的其他代码中访问此值。

将此值附加到 pylons.request 安全吗?或者我是否需要做一些事情,比如使用 threading_local 来制作一个本地线程,在处理每个新请求时我会重置该线程?

0 投票
3 回答
10200 浏览

.net - c#中简单的线程安全非阻塞文件记录器类

我有一个 Web 应用程序,它将一些信息记录到文件中。我正在 C# 中寻找一个简单的线程安全的非阻塞文件记录器类。我对线程的经验很少。我知道那里有很棒的日志记录组件,例如 log4Net、Enterprise Library Logging Block、ELMAH,但我不希望我的应用程序有外部依赖。我正在考虑使用这个队列实现http://www.codeproject.com/KB/cpp/lockfreeq.aspx

0 投票
6 回答
17562 浏览

python - 生成器是线程安全的吗?

我有一个多线程程序,我在其中创建了一个生成器函数,然后将它传递给新线程。我希望它本质上是共享/全局的,因此每个线程都可以从生成器中获取下一个值。

使用这样的生成器是否安全,或者我会遇到从多个线程访问共享生成器的问题/条件?

如果没有,有没有更好的方法来解决这个问题?我需要一些可以循环遍历列表并为调用它的线程生成下一个值的东西。

0 投票
5 回答
11830 浏览

c# - 在 ui 线程中执行委托(使用消息泵)

我有一个后台线程来处理与外部服务的通信。每次后台线程收到一条消息时,我都想将其传递给 UI 线程以进行进一步处理(显示给用户)。

目前我已经创建了一个线程安全的消息队列,它定期在 Timer.Tick 中汇集并填充到后台线程中。但是这个解决方案是次优的。

你知道如何使用消息泵将事件从后台线程传递到 ui 线程吗?