concurrency相关内容

触发自动释放的 NSOperationQueue 是否危险?

我有一个需要很长时间的任务,应该在后台运行.根据文档,这可以使用 NSOperationQueue 来完成.但是,我不想保留 NSOperationQueue 的类全局副本,因为我真的只将它用于一项任务.因此,我只是将它设置为 autorelease 并希望它在任务完成之前不会被释放.它有效. 像这样: NSInvocationOperation *theTask = [NSInvocatio ..
发布时间:2021-12-28 23:10:24 移动开发

在原子变量上使用 volatile 原语有什么区别?

可能的重复: Java:volatile boolean vs AtomicBoolean 什么时候适合使用 volatile 原语(例如 boolean、integer 或 long)而不是AtomicBoolean、AtomicInteger 或 AtomicLong,反之亦然? 解决方案 可见性语义完全一样,使用原子原语有用的情况是当你需要使用它们的原子方法时. 例如: ..
发布时间:2021-12-28 23:10:11 Java开发

每个处理器产生一个以上的线程有意义吗?

从逻辑的角度来看,一个应用程序可能需要数十或数百个线程,其中一些线程我们大部分时间都在休眠,但只有极少数将始终并发运行.问题是:产生比系统中的处理器更多的并发线程是否有意义,还是一种浪费? 我看到一些服务器应用程序实现了一个调度程序来逻辑地管理任务(通常称为作业),但也产生了很多线程,所以我看不出好处在哪里. 提前致谢. 解决方案 好的.如果您的软件频繁使用磁盘或网络 IO,您 ..
发布时间:2021-12-28 23:09:41 其他开发

FileInputStream 和 FileOutputStream 到同一个文件:read() 是否保证看到“之前发生"的所有 write()?

我使用文件作为大数据的缓存.一个线程顺序写入,另一个线程顺序读取. 我能否确定一个线程中(通过write())写入的所有数据都可以从另一个线程read(),假设正确的"'发生在之前'在 Java 内存模型方面的关系?这种行为有记录吗? 在我的 JDK 中,FileOutputStream 不会覆盖 flush(),并且 OutputStream.flush() 为空.这就是为什么我想知 ..
发布时间:2021-12-28 23:09:30 Java开发

MySQL 连接器/JDBC 线程安全吗?

标准的 MySQL JDBC 驱动程序线程安全吗?具体来说,我想在所有线程中使用单个连接,但每个语句只会在单个线程中使用.是否有某些情况是安全的,而另一些则不安全?您在这里有什么体验? 解决方案 每个连接开始/提交事务.除非您正在做一些非常具体的事情(老实说,我真的想不出一个例子来证明这是合理的),否则最好使用连接池和每个线程的连接. ..
发布时间:2021-12-28 23:09:24 Java开发

如何将具有多个参数的函数传递给 python concurrent.futures.ProcessPoolExecutor.map()?

我希望 concurrent.futures.ProcessPoolExecutor.map() 调用由 2 个或更多参数组成的函数.在下面的示例中,我使用了 lambda 函数并将 ref 定义为一个与 numberlist 大小相同且值相同的数组. 第一个问题:有没有更好的方法来做到这一点?在 numberlist 的大小可以是百万到十亿个元素的情况下,因此 ref size 必须遵循 ..
发布时间:2021-12-28 23:09:15 Python

如何(全局)替换 Java 并行流的公共线程池后端?

我想全局替换 Java 并行流默认使用的公共线程池,例如,对于 IntStream.range(0,100).parallel().forEach(i -> {做工作();}); 我知道可以通过将此类指令提交到专用线程池来使用专用 ForkJoinPool(参见 Java 8 并行中的自定义线程池流).这里的问题是 是否可以用其他一些实现(比如 Executors.newFixedThr ..

如何防止 Sql Server 作业同时运行

我的 SQL 代理中有一些预定的作业: Job1,每 2 分钟执行一次 Job2,每 10 分钟执行一次 Job3,每 15 分钟执行一次 如您所见,多个作业可以同时运行.当这些作业同时运行时,会导致 CPU 使用率达到 100%. 有解决办法吗?有没有办法控制并发运行的作业数量?注意:我需要这些作业在适当的时间内大约运行. 解决方案 通过 sp_getapplock ..
发布时间:2021-12-28 23:09:02 数据库

假设我知道我将在 x64 cpu 上运行,我可以忽略哪些 JVM 同步实践?

我知道 JVM 内存模型是为 CPU 的最低公分母而设计的,因此它必须假设 JVM 可以运行的 CPU 的最弱模型(例如 ARM). 现在,考虑到 x64 具有相当强大的内存模型,假设我知道我的程序只能在 64 位 x86 CPU 上运行,我可以忽略哪些同步实践?当我的程序通过虚拟化运行时,这也适用吗? 示例: 众所周知,JVM 的内存模型需要同步对 long 和 double 的读 ..
发布时间:2021-12-28 23:08:54 Java开发

我们如何调用需要协程的普通函数?

考虑一个调用另一个协程的协程: async def foo(bar):结果 = 等待栏()返回结果 如果 bar 是一个协程,这可以正常工作.如果 bar 是一个普通函数,我需要做什么(即我需要做什么来包装对 bar 的调用),以便此代码执行正确的操作? 使用 async def 定义协程是完全可能的,即使它从不做任何异步操作(即从不使用 await).但是,问题询问如何在 foo 的代 ..
发布时间:2021-12-28 23:08:41 Python

我可以防止 StreamReader 在使用时锁定文本文件吗?

StreamReader 在读取文本文件时锁定它. 我可以强制 StreamReader 在“只读"或“非锁定"模式下工作吗? 我的解决方法是将文件复制到一个临时位置并从那里读取它,但如果可能,我更愿意直接使用 StreamReader.任何替代建议? 背景: 我编写了一个小应用程序来从日志文件中获取一些统计信息.这个文件不断被外部程序更新(每秒几次),让我们调用 AAXXYY. ..
发布时间:2021-12-28 23:08:34 C#/.NET

可以证明“易失性"的代码示例如下:应该使用声明

目前我不明白什么时候应该使用 volatile 来声明变量. 我已经做了一些研究并搜索了很长时间的一些资料,知道当一个字段被声明为 volatile 时,编译器和运行时会注意到这个变量是共享的,并且对它的操作不应该重新排序与其他内存操作. 但是,我仍然无法理解我们应该在什么场景下使用它.我的意思是有人可以提供任何示例代码来证明使用“volatile"与不使用它相比可以带来好处或解决问题 ..
发布时间:2021-12-28 23:08:23 Java开发

多个线程向一个列表添加元素.为什么列表中的项目总是比预期的少?

以下代码解释了我的问题.我知道该列表不是线程安全的.但这背后的“真实"原因是什么? 类程序{静态无效主(字符串 [] args){列表strCol = new List();for (int i = 0; i {添加元素(strCol);}).ContinueWith((t) => { WriteCount(strCol, id.ToString()); });}Console.ReadLin ..

bash flock:如果无法获得锁则退出

以下锁定机制用于防止 cron 作业并发运行: #!/bin/bashecho "临界区前"(羊群-e 200echo "在临界区"睡 5) 200>/tmp/blah.lockfileecho "临界区之后" 同时运行两个实例时,后者会等到第一个实例完成,然后再运行.这可能会导致等待运行的脚本积压. 我如何修改这个脚本,以便如果 flock 无法获取锁,它会终止脚本?我试过 -n 没有 ..
发布时间:2021-12-28 23:08:04 其他开发

为什么线程会自发地从 wait() 中唤醒?

我想知道为什么线程会自发地从 java 中的 wait() 唤醒. 这是设计决定吗?是妥协吗? 编辑:(来自 Java 并发实践,第 300 页) wait 甚至允许返回“虚假" - 不回应任何线程调用通知. 作者进一步声明: 这就像一个松散的烤面包机使铃声响起的连接当吐司准备好时有时还没有准备好. 这就是为什么你总是必须像 一样编码 synchronized( ..
发布时间:2021-12-28 23:07:55 Java开发

.NET 4.0 中的并发优先级队列

.NET 4.0 似乎有很多与可能依赖于并发优先级队列的并发相关的改进.框架内是否有合适的优先级队列实现可供重用? 解决方案 msdn 上的“使用 .NET 框架进行并行编程示例"中有一个实现.请参阅 ParallelExtensionsExtras. 文件源代码的直接链接ConcurrentPriorityQueue.cs ..
发布时间:2021-12-28 23:07:38 C#/.NET

Scala 中的并发映射/foreach

我有一个迭代 vals: Iterable[T] 和一个没有任何相关副作用的长时间运行的函数:f: (T => Unit).现在这以明显的方式应用于 vals : vals.foreach(f) 我希望对 f 的调用同时进行(在合理范围内).Scala 基础库中某处是否有明显的函数?类似的东西: Concurrent.foreach(8/* 线程数.*/)(vals, f) 虽然 f 运行 ..
发布时间:2021-12-28 23:07:18 其他开发

MySQL 临时表是共享资源吗?

我有一个使用临时表的 MySQL 存储过程.假设我的表名是“temp",我用它来存储一些中间数据.它会在程序开始时创建,并在程序结束时删除. 创建过程 p()开始创建临时表 \`temp\`(...);插入 \`temp\` 值(...);删除临时表 \`temp\`;结尾; 问题是这个存储过程可能被不同的用户同时使用,所以我想知道这是否会导致任何问题(即临时表中插入数据的任何冲突).换句话说 ..
发布时间:2021-12-28 23:07:08 数据库