multithreading相关内容

初学者在 iPhone 上常犯的多线程错误

我刚刚在我的应用中引入了多线程,只是为了让一个愚蠢的 UIActivityIndi​​catorView 工作.好吧,活动指示器工作,好吧 - 但现在我的应用程序有时会崩溃,有时它不会 - 在其他受控条件下......我需要弄清楚这一点,但不知道从哪里开始寻找...... 那么,初学者在 iPhone 上使用多线程时常犯的一些常见错误是什么?请具体回答.谢谢你的时间. 更新:我添加了有 ..
发布时间:2022-01-23 10:51:54 移动开发

为什么 UIKit 操作必须在主线程上执行?

我试图了解为什么不能使用多个线程执行 UI 操作.这也是其他框架(如 OpenGL 或 cocos2d)的要求吗? C# 和 javascript 等其他语言怎么样?我尝试在 google 中查找,但人们提到了一些我不理解的关于 POSIX 线程的内容. 解决方案 在 Cocoa Touch 中,UIApplication 即你的应用程序的实例被附加到主线程,因为这个线程是由 UIA ..
发布时间:2022-01-23 10:45:16 移动开发

java变量本身是线程安全的吗?更新变量时?

假设我有两个线程更新一个对象,一个线程不同步地从该对象读取.显然,这是运行条件.但是,我想知道变量本身是否只能部分写入. 公共类 CommonObject 扩展 Object{静态 int memberVar=-1;}公共类 Input1Thread 扩展 Thread{公共无效运行(){而(真)CommonObject.memberVar = 1}}公共类 Input2Thread 扩展 Th ..

我是否需要同步对 Java 中不可变类型的访问?

假设我有这个课程: 类动物园{受保护的字符串熊名;受保护的双重培训师薪水;受保护的整数猴子计数;} 可以一个线程写入这些字段,另一个线程读取它们,而不需要 synchronized 访问 Zoo 对象吗? 注意:这些值可以彼此分开处理,因此在读取 monkeyCount 时更改 trainerSalary 并不重要. 编辑: 澄清一下,这些字段是可变的;只有它们引用的对象是不 ..
发布时间:2022-01-22 20:46:26 Java开发

如何让多个 Java 线程根据用户的请求暂停和恢复?

我正在创建一个 20 分钟倒计时应用程序.我正在使用 JavaFX SceneBuilder 来执行此操作.计时器由两个标签组成(一个代表分钟,一个代表秒——每个都由一个 CountdownTimer 类对象组成)和一个进度条(计时器看起来像 this).这些组件中的每一个都是独立的,并同时在不同的线程上运行,以防止 UI 冻结.它有效. 问题: 我需要能够暂停和恢复的三个线程(min ..
发布时间:2022-01-22 20:45:42 Java开发

使用“常规"用于同步线程的变量

如果我只有两个线程,并且我希望其中一个等待另一个达到某个点,那么执行以下操作是否安全: bool 等待 = true;//线程1:而(等待);等待=真;//重新设置信号//线程2:/* 这里预写在线程 1 继续之前需要完成的代码 */等待=假; 基本上,如果一个线程只写,另一个只读,会不会有问题?我假设单个 bool 的读取或写入是原子的,即使不是,我也看不出它在这里有何不同. 解决方案 ..
发布时间:2022-01-22 20:45:05 C/C++开发

通过 this vs dummy 对象同步

到目前为止,我已经看到了同步块的用法,但最近我了解到使用虚拟对象更可取.我找到了与此相关的以下主题. Java 同步方法锁定对象或方法? 总而言之,在下面的代码中,两个不同的对象不能同时运行 addA 和 addB,因为两者都使用 this 来锁定. private int a;私人int b;公共同步无效 addA(){一个++;}公共同步无效 addB(){b++;} 如果我使 ..

同步块/代码 Java 上的线程访问

我正在阅读 Synchronized 工作.示例如下: 公共类单例{私有静态易失单例_instance;公共静态单例 getInstance(){如果(_instance == null){同步(Singleton.class){如果(_instance == null)_instance = new Singleton();}}返回_实例;} 假设两个线程 A 和 B 正在访问 getIns ..
发布时间:2022-01-22 20:44:31 Java开发

解释 JIT 重新排序的工作原理

我已经阅读了很多关于 Java 同步以及所有可能出现的问题的信息.但是,我仍然有点困惑的是 JIT 如何重新排序写入. 例如,一个简单的双重检查锁对我来说很有意义: 类 Foo {私人易失性助手助手= null;//1公共助手 getHelper() {//2if (helper == null) {//3同步(这个){//4if (helper == null)//5助手 = 新助手( ..
发布时间:2022-01-22 20:42:36 Java开发

是否需要为只读线程和只写线程创建互斥锁?

有2个线程,一个只读取signal,另一个只设置signal. 是否需要为signal创建互斥体以及原因? 更新 我只关心如果两个线程同时读取/设置它是否会崩溃 解决方案 您可能希望为此使用原子变量,尽管互斥锁也可以. 问题在于不能保证数据在线程之间保持同步,但是使用原子变量可以确保一旦一个线程更新该变量,其他线程就会立即读取其更新后的值. 如果一个线程更新缓 ..
发布时间:2022-01-22 20:40:37 其他开发

将每个列表项一个一个传递给一个新线程

我想做的很简单, 我扫描一个字符串列表,然后将每个字符串传递给一个新线程进行打印. 使用系统;使用 System.Collections.Generic;使用 System.Threading;命名空间多线程同步{课堂节目{静态无效主要(字符串 [] 参数){列表stringList = 新列表{ “服务器 1"、“服务器 2"、“服务器 3"、“服务器 4"、“服务器 5 ..
发布时间:2022-01-22 20:39:55 C#/.NET

HashMap 缓存中的同步

我有一个网络应用程序,人们在其中请求资源.为了提高效率,这些资源使用同步的哈希映射进行缓存.这里的问题是,当两个不同的请求同时针对同一个未缓存的资源时:检索资源的操作会占用大量内存,所以我想避免为同一个资源多次调用它. 谁能告诉我以下代码段是否存在任何潜在问题?提前致谢. 私有映射资源 = Collections.synchronizedMap(new HashMap());公共无效请求( ..

从多个线程调用时 Thread.sleep() 如何工作

sleep() 是 Thread 类的静态方法.从多个线程调用时它是如何工作的.以及它如何确定当前的执行线程.? 或者可能是一个更通用的问题是如何从不同的线程调用静态方法?不会有并发问题吗? 解决方案 它是如何计算出当前的执行线程? 没必要.它只是调用操作系统,而操作系统总是让调用它的线程休眠. ..
发布时间:2022-01-22 20:39:14 Java开发

如何使用 Boost 制作关键部分?

对于我的跨平台应用程序,我已经开始使用 Boost,但我无法理解如何实现代码来重现 Win32 的关键部分或 .Net 的 lock 的行为. 我想写一个方法Foo,可以从不同的线程调用来控制对共享字段的写操作.应该允许同一线程内的递归调用(Foo() -> Foo()). 在 C# 中这个实现非常简单: object _synch = new object();无效的富(){loc ..