问题标签 [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.
c++ - 如何在 Linux 上获得等效的 printf_l?
此函数存在于 OS X 上,并允许您将自定义本地传递给函数。setlocale 不是线程安全的,并且将 locale 作为参数传递。
如果没有等效项,则任何与语言环境无关的 printf 或仅用于双打 (%g) 的 printf 都可以。
c# - lock(objlocker) 是否使该对象在应用程序范围内线程安全?静态成员是否自动线程安全?
当您锁定一个对象时,该对象是否在整个应用程序中都被锁定?
例如,这个来自 C# 3.0 的简而言之第 19.6.1 节“线程安全和 .NET 框架类型”中的片段:
是否第一次锁定:
阻止另一个线程访问:
还是可以同时执行?
CLR 会自动使您的静态方法线程安全吗?还是这取决于开发商?
谢谢,约翰
c# - IStorage 的复合文件实现是线程安全的吗?
我正在使用来自 C# (StgCreateDocfile) 的 IStorage 的复合文件实现。
如果我自己同步读取和写入,从多个线程访问一个 IStorage / IStream 实例是否安全?或者这里是否有任何可能有问题的 COM 问题?
例如,我可以安全地调用 EnumElements 来获取存储中的所有流,同时(并且来自不同的线程)创建和写入一个新流吗?
我已经为我的实现编写了一个压力测试,它没有显示任何问题,但我需要 100% 确定。我在 MSDN 文档中没有找到此信息。
java - 使用双重检查习语重置延迟加载的字段
考虑“实例字段延迟初始化的双重检查习惯用法”:
/blockquote>我希望能够以安全的方式重置该字段(在我的情况下,强制它从数据库中再次加载)。我假设我们可以通过使用重置方法来做到这一点:
/blockquote>这是重置字段的标准方法吗?安全吗?有什么陷阱吗?我之所以问,是因为 Bloch 就双重检查延迟加载给出了以下警告:“这个习语非常快,但也很复杂和微妙,所以不要试图以任何方式修改它。只需复制和粘贴——通常不是一个好主意,但在这里很合适。”
提前感谢来自喜马拉雅山的普拉亚。
c# - 如何使用 AppDomain 限制静态类的范围以进行线程安全使用?
我被一个架构不佳的解决方案所困扰。它不是线程安全的!
我在解决方案中有几个共享的类和成员,在开发过程中一切都很酷......
BizTalk 击沉了我的战舰。
我们正在使用自定义 BizTalk 适配器来调用我的程序集。适配器正在调用我的代码并并行运行,所以我假设它在同一个 AppDomain 下使用多个线程。
我想做的是让我的代码在它自己的 AppDomain 下运行,这样我遇到的共享问题就不会相互混淆。
我有一个非常简单的类,BizTalk 适配器正在实例化然后运行 Process() 方法。
我想在我的 Process() 方法中创建一个新的 AppDomain,因此每次 BizTalk 旋转另一个线程时,它都会有自己的静态类和方法版本。
BizTalkAdapter 代码:
这是 BizTalk 调用类:
仅供参考:Loader 类与 dataFile 类位于单独的 DLL 中。
任何帮助,将不胜感激。我将继续致力于使代码线程安全,但我觉得这可能是“简单”的答案。
如果有人有其他想法,请提出。
谢谢你,
基思
只是为了完整性。
我确实发现,如果我在“传输高级选项”对话框中将发送适配器标记为“有序交付”,我就能够避免我遇到的多线程问题。
我认为这是我的问题的另一个可能答案,但不一定是这个问题。
multithreading - SharePoint 和线程安全
我正在寻找有关 SharePoint 和线程安全的文章、论坛或博客文章?我很确定在使用 SharePoint 对象模型时必须考虑有关线程安全的一些特殊方面。
其实我还没有找到很多关于这方面的信息。
所以我很期待你的回答。
再见,弗洛
java - 使用 wait/notifyAll 正确同步 Java 线程?
这是我的应用程序的简化版本,显示了我在做什么。
这里的基本概念是我有一群工作人员,他们都独立地对传入的数据行进行一些处理,并在他们喜欢的任何地方写出数据 - 他们不需要将任何数据报告回主线程或彼此共享数据。
我遇到的问题是这段代码死锁了。我正在阅读一个超过 100 万行的文件,我很幸运在我的应用程序停止响应之前获得了 100 行。
实际上,工人们都在做不同数量的工作,所以我想等到他们都完成后再去下一条生产线。
我不能让工作人员以不同的速度处理并在内部对数据进行排队,因为我正在处理的文件太大而无法放入内存。
我不能给每个工人自己的 FileReader 来独立获取“线”,因为我在工人看到它之前就在线上进行了大量处理,并且不想在每个工人中重新进行处理。
我知道我在 Java 中缺少一些相当简单的同步方面,但我被困在这一点上。如果有人能解释我在这里做错了什么,我将不胜感激。我相信我误解了同步的某些方面,但我没有尝试修复它的想法。
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?