thread-safety相关内容
我怎样才能实现这里的 while 循环总是精确执行 100 次.当我执行代码时,在极少数情况下它会在控制台上打印 99 或 98 行而不总是 100,我不明白. import java.util.ArrayList;导入 java.util.concurrent.atomic.AtomicInteger;公共类 Print 实现 Runnable {static AtomicInteger at
..
我需要更新 ConcurrentHashmap 中的值,但我不确定如何安全地执行此线程. Hashmap 是一个 ConcurrentHashMap,我需要获取自定义类的实例,对其执行一些操作,然后将更新的值放回去. 有什么办法可以将这个 get-alter-put 操作与原子操作结合起来吗? 提前致谢 解决方案 您可以使用 ConcurrentHashMaps comp
..
使用与最近的问题中描述的模式非常相似的模式,对于多线程应用程序,我得到了奇怪的日期值(例如,像 2025 或 2035 这样的年份,显然源数据中不存在这样的值).似乎发生了并发问题. 源代码看起来像 //各种 Java DateFormat 模式,例如“yyyy-MM-dd".private static final String[] DATE_PATTERNS = new String[
..
这是我的两个方法变体,它返回一个与枚举值相关联的字符串(保存在字典中).第一个变体较慢,但线程安全,第二个变体更快,但我不知道它是否是线程安全的.第一: string GetStringForEnum (SomeEnum e){字符串 str = null;lock (someDictionary)//someDictionary 不在其他任何地方使用(仅在此方法中){ if (!someDic
..
由于 tkinter 不是线程安全的,我经常看到人们使用 after 方法将一些代码排队以在主线程中执行.举个例子: 导入 tkinter 作为 tk从线程导入线程def change_title():root.after(0, root.title, 'foo')根 = tk.Tk()线程(名称=“工人",目标=更改标题).开始()root.mainloop() 因此,我们不是在 worke
..
绘制一些存储在 ArrayList 中的粒子.此代码工作正常: super.paintComponent(g);对于(粒子b:粒子Arr){g.setColor(b.getColor());g.fillOval(b.getXCoor() + 5,b.getYCoor(),b.getParticleSize(),b.getParticleSize());} 但是这段代码会抛出一个并发修改异常
..
我有一个课程组织如下: public class MyClass {ExecutorService 池;公共 MyClass(){pool = ...//由一个实现 ExecutorService 的类初始化}公共最终无效提交(可运行运行){池.执行(运行);}} submit 方法是线程安全的还是我应该使用基于 Lock 的系统?例如 ReentrantLock look = new R
..
我有一段 C# 代码如下.此代码总结了 DataTable 中的一列“双打": var data = this.Db.ExecuteRead(query, this.Score.Name);无功时间 = 0.0;foreach(data.Rows 中的 DataRow 行){时间 += this.ParseDouble(row[0].ToString())/MillisecondsPerMinu
..
寻找线程安全的随机生成器我找到了一个mersenne twister生成器类,作者说如果线程安全: http://www.umiacs.umd.edu/~yangcj/mtrnd.html 但是在研究了代码之后,我看不出它是否是安全线程.那里没有任何类型的锁或任何类似于锁变量的东西. 这个实现真的是线程安全的吗?如果是这样,魔法是什么? 解决方案 它似乎是线程安全的,因为
..
在 Microsoft Visual C++ 中,我可以调用 CreateThread() 通过使用一个 void * 参数启动一个函数来创建一个线程.我将指向结构的指针作为该参数传递,并且我看到很多其他人也这样做. 我的问题是,如果我传递一个指向我的结构的指针,我如何知道在调用 CreateThread() 之前结构成员是否已实际写入内存?有没有保证它们不会被缓存?例如: struct
..
我使用的一些软件要求我禁用线程安全.我在 Windows 服务器上工作.从我在别处读到的,我不能只在 .ini 文件中配置它.这是真的?如果是这样,我将如何编译它以关闭线程安全? 解决方案 您必须在禁用 ZTS 的情况下编译 PHP(编译标志 --disable-zts)或 下载二进制文件 禁用 ZTS. 这在某些 Web 服务器中无法正常工作,即在同一进程中同时处理多个 PHP 脚
..
可能的重复: PHP 中什么是线程安全或非线程安全 某些东西是或不是线程安全的意味着什么? 例如,PHP 中的 setlocale() 不是线程安全的: 区域设置信息是按进程维护的,而不是按线程维护的.如果您正在多线程服务器 API(如 IIS 或 Apache)上运行 PHP在 Windows 上,您可能会遇到区域设置的突然变化,同时脚本正在运行,尽管脚本本身从未调用过设置区
..
我有以下情况:我想相互排除对对象的访问. 到目前为止,我通常会使用锁对象 object lockObject = new object();...方法 1:锁定(锁定对象){ CODE1 } 现在我还有一个可以从另一个线程调用的方法.不应该在未知时间内被阻塞,而是应该在定义的时间内给出答案. 在这种情况下,我将使用监视器,例如 method2:尝试{Monitor.TryEnte
..
我有一个可同时从多个线程访问的 decimal 变量.Interlocked 类函数根本不支持小数,所以我剩下的唯一方法是使用 lock(){}.这似乎有点矫枉过正. 是否有其他方法以线程安全的方式为 decimal 变量添加值? 解决方案 使用锁并不过分.它是必需的. 像 System.Decimal 这样的结构类型从来都不是原子的,它也不适合原生 cpu 字长.这就是 In
..
我正在尝试围绕 iOS OSTestAndSet() 和 OSTestAndClear() 函数创建一个包装器,以便与基于以下 GitHub 代码: class AtomicBoolean {私有变量 val:字节 = 0///设置值,并返回前一个值.///test/set 是一个原子操作.func testAndSet(value: Bool) ->布尔{如果值{返回 OSAtomicTest
..
#include "iostream"#include "原子"使用命名空间标准;单例类{单例();静态单例 * _pInstance;民众:~单例(){}静态单例* getInstance() {单例 * tmp = _pInstance;atomic_thread_fence(std::memory_order_acquire);如果(tmp == nullptr){tmp = _pInsta
..
是 RaiseEvent 线程安全吗? 在 C# 中编写 if (event != null){事件调用();} 并且 C# 代码不是线程安全的.... 解决方案 如果我需要做线程安全事件,我这样写: 课程测试公共事件点击(ByVal sender As Object, ByVal e As EventArgs)公共事件 MouseIn(ByVal sender As Obje
..
我在一个单独的类中有以下方法: 类 API:NSObject {var 数据 = NSData()var 委托:APIProtocol?func getItems(callback: (Array) -> ()) {让 urlPath: NSString = "http://localhost:3000/files"让 url = NSURL(string: urlPath)让请求 = NSMu
..
以这个线程: Thread thread = new Thread(delegate(){//代码});线程.开始(); 应该在thread.Start();周围还是里面: Thread thread = new Thread(delegate(){尝试{//代码}捕获(异常){//代码}}); 解决方案 放在里面还是放在外面完全不同. 如果将它们放在 thread.Start()
..
我在 SQL Server 和 Exchange Web 服务之间的 CLR 中有一个接口,用于在应用程序之间同步和发送电子邮件.在测试中,它可以正常工作(ed)没有任何问题;我们在生产环境中看到了一些零星的问题,其中较长的网络服务任务似乎重叠了. 我的问题很简单,我无法通过阅读 MSDN 上的 CLR 详细信息来决定 - CLR 线程安全还是开箱即用. 如果不是,那么调用线程安全的
..