thread-safety相关内容
使用线程非常简单 Thread thread = new Thread(MethodWhichRequiresSTA);thread.SetApartmentState(ApartmentState.STA); 如何在 WPF 应用程序中使用任务完成相同的任务?这是一些代码: Task.Factory.StartNew(() =>{返回“一些文本";}).ContinueWith(r =>
..
Spring RestTemplate 是线程安全的吗?那是 是一个 RestTemplate 一个多个连接可以安全共享的策略对象.或 是一个 RestTemplate 连接对象(如数据库连接),在使用时不能共享,并且需要为每个连接重新创建或池化. 解决方案 RestTemplate 线程安全(强调): 从概念上讲,它与 JdbcTemplate、JmsTemplate 以及
..
我花了一些时间调试一个导致分段错误的程序.该错误非常不确定且断断续续,这很烦人.我将范围缩小到 strtok() 的调用.我怀疑是调用 strtok() 在两个不同的线程中拆分字符串导致了分段错误.我可以在两个不同的线程中调用 strtok() 吗? 谢谢. 解决方案 strtok() 不可重入,因此不应在线程应用程序中使用它,请使用 strtok_r() 代替.
..
我痛苦地意识到人们需要在事件驱动的 GUI 代码中编写以下代码模式的频率,其中 private void DoGUISwitch() {//通过异常城市巡航object1.Visible = true;object2.Visible = false;} 变成: private void DoGUISwitch() {如果(object1.InvokeRequired){object1.Inv
..
我无法深究这个错误的根源,因为当附加调试器时,它似乎没有发生. 集合被修改;枚举操作可能不会执行 下面是代码. 这是一个 Windows 服务中的 WCF 服务器.只要有数据事件(随机间隔,但不是很频繁 - 每天大约 800 次),服务就会调用方法 NotifySubscribers(). 当 Windows 窗体客户端订阅时,订阅者 ID 被添加到订阅者字典中,当客户端取
..
在我的应用程序中,通过发出请求来更改公共对象的状态,而响应取决于状态. class SomeObj():def __init__(self, param):self.param = 参数定义查询(自我):self.param += 1返回 self.paramglobal_obj = SomeObj(0)@app.route('/')定义家():闪光(global_obj.query())ren
..
'boolean' 变量对于从任何线程读取和写入是线程安全的吗?我已经看到一些新闻组引用说它们是.是否还有其他数据类型可用?(枚举类型,也许是短整数?) 最好有一个可以从任何线程安全读取的所有数据类型的列表,以及另一个也可以在任何线程中安全写入的列表,而不必求助于各种同步方法. 解决方案 请注意,您基本上可以使 delphi 中的所有内容都变为非线程安全的.虽然其他人提到布尔值的对齐
..
在我读过的大多数讨论中,它表明使属性原子化并不能保证它是线程安全的,它只是保证返回的值不会因为一个对象写入而成为垃圾它和另一个试图同时阅读它. 我知道这不是线程安全的,因为第三个对象可能正在写入它,虽然访问它的对象不会返回垃圾,但并不完全确定它会在多个对象写入时返回哪个值同时,它可能会得到它们的任何值. 所以当我们说它不会返回垃圾时,垃圾是否是指如果一个对象是非原子的并且一个对象试图访
..
例如,多线程时是否需要锁定bool值? 解决方案 没有原子类型这样的东西.只有操作可以是原子的. 读取和写入适合单个字的数据类型(在 32 位处理器上为 int,在 64 位处理器上为 long)在技术上是“原子的"",但抖动和/或处理器可以决定对指令重新排序,从而产生意外的竞争条件,因此您需要使用 lock 序列化访问,使用 Interlocked 类写入(在某些情况下读取),或声
..
你会如何回答以下问题? java 类的方法包含一段代码,该代码块必须是原子地执行.解释,使用适当的伪代码,你如何将确保此代码块以原子方式执行 我会通过制作方法来实现这一点吗.. public final AtomicInteger x = new AtomicInteger(0); 然后确保返回 get 语句: x.get() 如果我想增加 x 的值,我会这样做吗? x.ge
..
我正在制作一个网站,我想在标准 MyISAM 表中增加一个计数器. 简化示例: UPDATE 票数 SET num = num + 1; 如果多个连接执行相同的查询,这会导致问题吗,或者 MySQL 会处理它并锁定表或其他东西以确保没有冲突吗? 解决方案 MyISAM 表使用表级锁定.这意味着在执行更新查询期间将锁定整个表.所以你的简化用例的答案是:是的,这是线程安全的.但如果您
..
我读了一章,但不太喜欢.我仍然不清楚每个内存顺序之间的区别是什么.这是我目前的推测,在阅读了更简单的 http://en.cppreference.com/w/cpp/atomic/memory_order 以下内容有误,请勿学习 memory_order_relaxed:不同步,但在不同原子变量中从另一种模式完成订单时不会被忽略 memory_order_consume:同步读取这
..
我想知道 Linq 扩展方法是否是原子的?或者我是否需要在任何类型的迭代之前lock任何跨线程使用的IEnumerable对象? 将变量声明为 volatile 是否对此有任何影响? 总而言之,以下哪个是最好的线程安全操作? 1- 没有任何锁: IEnumerable_objs =//...var foo = _objs.FirstOrDefault(t =>//一些条件 2
..
考虑 x86 CPU 上的单个内存访问(单个读取或单个写入,而不是读取 + 写入)SSE 指令.该指令正在访问 16 个字节(128 位)的内存,并且访问的内存位置对齐到 16 个字节. 文档“英特尔® 64 位架构内存订购白皮书"指出,对于“读取或写入地址在 8 字节边界上对齐的四字(8 字节)的指令",内存操作似乎作为单个内存执行访问与内存类型无关. 问题:是否存在 Intel/A
..
SynchronizedCollection 和 System.Collections.Concurrent 命名空间中的并发集合有何不同,除了 Concurrent Collections 作为命名空间和 >SynchronizedCollection 是一个类吗? SynchronizedCollection 和并发集合中的所有类都提供线程安全集合.我如何决定何时使用一种而不是另一种,为
..
.NET 4.0 的 System.Lazy 类通过枚举 LazyThreadSafetyMode,我将其总结为: LazyThreadSafetyMode.None - 不是线程安全的. LazyThreadSafetyMode.ExecutionAndPublication - 只有一个并发线程会尝试创建底层值.成功创建后,所有等待的线程将收到相同的值.如果在创建过程中发生未处理的异常
..
给定以下多重: public class Multiton{private static final Multiton[] 实例 = new Multiton[...];私人 Multiton(...){//...}public static Multiton getInstance(int which){如果(实例[哪个] == null){实例[which] = new Multiton(.
..
我正在阅读 Java 中的多线程,我遇到了这个 局部变量在 Java 中是线程安全的. 从那时起我一直在思考局部变量如何/为什么是线程安全的. 谁能告诉我. 解决方案 当您创建一个线程时,它将创建自己的堆栈.两个线程将有两个堆栈,一个线程永远不会与其他线程共享其堆栈. 程序中定义的所有局部变量都将在堆栈中分配内存(正如 Jatin 所评论的,这里的内存意味着,对象的
..
此外,被设置的对象是否必须是线程安全的,以保证我们知道会话中存储的对象的状态是已知的. 另外,我在网上阅读了一些建议使用的内容: 同步(会话){session.setAttribute("abc", "abc");} 这是一个有效的建议吗? 解决方案 不,它们不是线程安全的,根据 IBM - Java 理论与实践:所有有状态的 Web 应用程序都被破坏了吗?.您需要同步.
..
如果我有两个多线程访问一个 HashMap,但保证它们永远不会同时访问同一个键,那还会导致竞争条件吗? 解决方案 在@dotsid 的回答中,他是这样说的: 如果您以任何方式更改 HashMap,那么您的代码就会被破坏. 他是对的.如果线程使用不相交的键集,则在没有同步的情况下更新的 HashMap 将破坏偶数.以下是部分1可能出错的事情. 如果一个线程执行了 put,那
..