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

c++ - 如何在 Linux 上获得等效的 printf_l?

此函数存在于 OS X 上,并允许您将自定义本地传递给函数。setlocale 不是线程安全的,并且将 locale 作为参数传递。

如果没有等效项,则任何与语言环境无关的 printf 或仅用于双打 (%g) 的 printf 都可以。

0 投票
3 回答
1679 浏览

c# - lock(objlocker) 是否使该对象在应用程序范围内线程安全?静态成员是否自动线程安全?

当您锁定一个对象时,该对象是否在整个应用程序中都被锁定?

例如,这个来自 C# 3.0 的简而言之第 19.6.1 节“线程安全和 .NET 框架类型”中的片段:

是否第一次锁定:

阻止另一个线程访问:

还是可以同时执行?

CLR 会自动使您的静态方法线程安全吗?还是这取决于开发商?

谢谢,约翰

0 投票
1 回答
1235 浏览

c# - IStorage 的复合文件实现是线程安全的吗?

我正在使用来自 C# (StgCreateDocfile) 的 IStorage 的复合文件实现。

如果我自己同步读取和写入,从多个线程访问一个 IStorage / IStream 实例是否安全?或者这里是否有任何可能有问题的 COM 问题?

例如,我可以安全地调用 EnumElements 来获取存储中的所有流,同时(并且来自不同的线程)创建和写入一个新流吗?

我已经为我的实现编写了一个压力测试,它没有显示任何问题,但我需要 100% 确定。我在 MSDN 文档中没有找到此信息。

0 投票
4 回答
887 浏览

java - Erlang JInterface - OtpMBox 线程安全吗?

在我的 Java 程序中,我创建了一个OtpNode和一个“命名的” OtpMBox。每当通过此 mbox 接收到消息时,需要执行一些耗时的操作,然后将回复消息发送回。由于此操作非常耗时,因此不会立即处理发送到 mbox 的后续消息。

所以我想使用 Java 线程——每收到一条消息。我的问题是我是否也应该为收到的每条消息创建一个新的OtpMBox,还是可以在所有线程之间共享原始 OtpMBox?

0 投票
5 回答
689 浏览

java - 使用双重检查习语重置延迟加载的字段

考虑“实例字段延迟初始化的双重检查习惯用法”:

/blockquote>

我希望能够以安全的方式重置该字段(在我的情况下,强制它从数据库中再次加载)。我假设我们可以通过使用重置方法来做到这一点:

/blockquote>

这是重置字段的标准方法吗?安全吗?有什么陷阱吗?我之所以问,是因为 Bloch 就双重检查延迟加载给出了以下警告:“这个习语非常快,但也很复杂和微妙,所以不要试图以任何方式修改它。只需复制和粘贴——通常不是一个好主意,但在这里很合适。”

提前感谢来自喜马拉雅山的普拉亚。

0 投票
6 回答
3821 浏览

c# - 如何使用 AppDomain 限制静态类的范围以进行线程安全使用?

我被一个架构不佳的解决方案所困扰。它不是线程安全的!

我在解决方案中有几个共享的类和成员,在开发过程中一切都很酷......
BizTalk 击沉了我的战舰。

我们正在使用自定义 BizTalk 适配器来调用我的程序集。适配器正在调用我的代码并并行运行,所以我假设它在同一个 AppDomain 下使用多个线程。

我想做的是让我的代码在它自己的 AppDomain 下运行,这样我遇到的共享问题就不会相互混淆。

我有一个非常简单的类,BizTalk 适配器正在实例化然后运行 ​​Process() 方法。

我想在我的 Process() 方法中创建一个新的 AppDomain,因此每次 BizTalk 旋转另一个线程时,它都会有自己的静态类和方法版本。

BizTalkAdapter 代码:

这是 BizTalk 调用类:

仅供参考:Loader 类与 dataFile 类位于单独的 DLL 中。

任何帮助,将不胜感激。我将继续致力于使代码线程安全,但我觉得这可能是“简单”的答案。

如果有人有其他想法,请提出。

谢谢你,
基思

只是为了完整性。

我确实发现,如果我在“传输高级选项”对话框中将发送适配器标记为“有序交付”,我就能够避免我遇到的多线程问题。

我认为这是我的问题的另一个可能答案,但不一定是这个问题。

0 投票
3 回答
2775 浏览

multithreading - SharePoint 和线程安全

我正在寻找有关 SharePoint 和线程安全的文章、论坛或博客文章?我很确定在使用 SharePoint 对象模型时必须考虑有关线程安全的一些特殊方面。

其实我还没有找到很多关于这方面的信息。

所以我很期待你的回答。

再见,弗洛

0 投票
2 回答
4536 浏览

java - 使用 wait/notifyAll 正确同步 Java 线程?

这是我的应用程序的简化版本,显示了我在做什么。

这里的基本概念是我有一群工作人员,他们都独立地对传入的数据行进行一些处理,并在他们喜欢的任何地方写出数据 - 他们不需要将任何数据报告回主线程或彼此共享数据。

我遇到的问题是这段代码死锁了。我正在阅读一个超过 100 万行的文件,我很幸运在我的应用程序停止响应之前获得了 100 行。

实际上,工人们都在做不同数量的工作,所以我想等到他们都完成后再去下一条生产线。

我不能让工作人员以不同的速度处理并在内部对数据进行排队,因为我正在处理的文件太大而无法放入内存。

我不能给每个工人自己的 FileReader 来独立获取“线”,因为我在工人看到它之前就在线上进行了大量处理,并且不想在每个工人中重新进行处理。

我知道我在 Java 中缺少一些相当简单的同步方面,但我被困在这一点上。如果有人能解释我在这里做错了什么,我将不胜感激。我相信我误解了同步的某些方面,但我没有尝试修复它的想法。

0 投票
2 回答
5305 浏览

multithreading - 代码重入与线程安全

“代码重入”“线程安全”的概念有什么区别?根据下面提到的链接,一段代码可以是其中之一,也可以是两者,也可以不是。

可重入和线程安全代码

我无法清楚地理解解释。帮助将不胜感激。

0 投票
4 回答
3243 浏览

multithreading - Thread-safety and concurrent modification of a table in SQLite3

Does thread-safety of SQLite3 mean different threads can modify the same table of a database concurrently?