thread-synchronization相关内容

同时可变访问保证不相交的大向量的任意索引

上下文 我有一个案例,多个线程必须更新存储在共享向量中的对象.但是向量很大,需要更新的元素数量比较少. 问题 在一个最小的例子中,要更新的元素集可以由一个(散列)集标识,该集包含要更新的元素的索引.因此,代码可能如下所示: let mut big_vector_of_elements = generate_data_vector();而 has_things_to_do() { ..
发布时间:2021-12-21 13:32:14 其他开发

Spring @Async 限制线程数

我的问题与这个问题非常相似:@Async 阻止一个线程继续,直到其他线程完成 基本上我需要在更多线程中运行~数百次计算.我只想运行一些并行线程,例如5 个线程并行 5 个计算. 我使用的是 spring 框架,@Async 选项是自然的选择.我不需要全功能的 JMS 队列,这对我来说有点开销. 有什么想法吗?谢谢 解决方案 您是否检查了 Task Executor?您可以 ..

我可以强制我的数据流管道中的一个步骤是单线程的(并且在一台机器上)吗?

我有一个管道,可以获取文件的 URL 并下载这些文件,为除标题之外的每一行生成 BigQuery 表行. 为了避免重复下载,我想根据以前下载的表检查 URL,如果 URL 不在此“历史"表中,则仅继续存储该 URL. 为此,我需要将历史记录存储在允许唯一值的数据库中,或者为此使用 BigQuery 可能更容易,但对表的访问必须严格串行. 我可以强制执行单线程执行(在一台机器上)来 ..

Apache Beam 中 DoFn 的线程同步

我正在编写一个 DoFn,其中的实例变量 elements(即共享资源)可以在 @ProcessElement 方法中改变: import java.util.ArrayList;导入 java.util.List;导入 org.apache.beam.sdk.transforms.DoFn;公共类 DemoDoFn 扩展了 DoFn{私有最终 int batchSize;私有瞬态列表元素;公共 ..
发布时间:2021-11-11 22:37:31 Java开发

对 Volatile.Read/Write 的理解

我正在尝试了解 C# Volatile 类. 正如我所读: Volatile.Write 方法强制写入 location 中的值到呼叫点.此外,任何较早的程序顺序加载和存储必须在调用 Volatile.Write 之前发生. Volatile.Read 方法强制读取 location 中的值在通话点.此外,任何后来的程序顺序加载和存储必须在调用 Volatile.Read 之后发 ..
发布时间:2021-09-20 18:37:25 C#/.NET

警告:格式“%d"需要“int"类型的参数,但参数 2 的类型为“long int"[-Wformat=]

这段代码是关于. 竞争条件:调度和编译器行为在进程或线程同步中起着重要作用.证明需要同步的最简单场景来自尝试修改共享变量值的两个线程/进程之间创建的竞争条件,这通常会导致数据不一致和错误结果.以下示例演示了这种情况: 我是 C 新手,对此警告所发生的事情有疑问.警告是什么意思,我该如何解决.我写的代码在这里: q1.c:在函数‘runner’中:q1.c:13:1:警告:格式‘%d’ ..
发布时间:2021-09-14 19:53:08 服务器开发

使用多线程打印字母和数字

我刚刚开始学习线程并且对它很陌生.我正在尝试一个接一个地打印字母和数字.我使用标志将它们同步但没有用. 公共类字母{公共静态无效主(字符串 [] args){AN an=新的AN(假);线程 t1=新线程(新的 Runnable() {@覆盖公共无效运行(){尝试 {a.Alpha();} catch (InterruptedException e) {//TODO 自动生成的 catch 块e ..

在这种情况下,线程如何同时获取两个对象的锁?

public void method(Type1 inst1, Type2 inst2) {同步(inst1){同步(inst2){//现在做点什么}}} 从这段代码中我可以理解,一旦一个线程进入该方法,它会在inst1上获取锁,然后在inst2上获取锁,不会释放inst1锁.我假设这两个对象都没有被其他线程锁定. 如果一个线程一次只能获取一个对象的锁,并且只能当当前对象的锁被释放时拥有另 ..

在 C# 应用程序中查找命名互斥锁

如果我没有该应用程序的源代码,如何在正在运行的 C# 应用程序中找到命名的互斥锁? 解决方案 SysInternals 的 Process Explorer 实用程序可以列出进程正在使用的句柄;其中一些句柄可能被命名为互斥体,然后您可以对其进行检查. ..
发布时间:2021-06-04 20:50:10 C#/.NET

java线程通信,独立的文件读取和写入

Java.我有两个线程.一个将持续监视某些事件,并基于这些事件将更新(添加或删除)文件.另一个线程是计时器任务事件,它将定期更新同一文件.我希望其他线程不访问文件时这些线程更新文件.我无法使用锁,因为文件更新代码部分对于每个线程和不同的Java类而言都是独立的.我该怎么办?预先感谢. 解决方案 您可以使用同步. 公共同步的void update(){......} 所以只有一个线程访 ..
发布时间:2021-05-07 18:56:13 Java开发

为什么CUDA中存在扭曲级同步原语?

关于CUDA中的 __ syncwarp(),我有两个问题: 如果我理解正确,那么将在SIMD功能中执行CUDA中的扭曲.难道不意味着warp中的所有线程都始终同步吗?如果是这样, __ syncwarp()到底是做什么的,为什么有必要? 假设我们启动了一个内核,该内核的块大小为1024,其中一个块中的线程分为每组32个线程的组.每个线程都通过共享内存与该组中的其他线程通信,但不与该组外的 ..
发布时间:2021-04-27 20:08:17 其他开发

C#.NET线程问题

我在C#.NET应用程序中的线程之间遇到通信问题.希望有人能指导我正确的方向,以寻求可能的解决方案. 我在C#.NET中有一个应用程序.它是Windows窗体应用程序.我的应用程序有两个线程-一个线程是主线程(UI线程),另一个线程是子线程.让我们将子线程称为"workerThread"该应用程序中仅使用一种形式.让我们将此形式称为"MainForm" 加载MainForm时启动子线程 ..
发布时间:2021-04-18 20:23:10 C#/.NET

Kotlin`..let`是线程安全的吗?

Kotlin ?.let是线程安全的吗? 比方说a变量可以在不同的线程中更改. 使用a?.let { /* */ }线程安全吗?如果它等于if (a != null) { block() },是否可能发生if中不为空且在block中已经为空的情况? 解决方案 a?.let { block() }确实等同于if (a != null) block(). 这还意味着,如果a是可变变 ..
发布时间:2021-02-15 19:30:22 其他开发

我可以强制将数据流管道中的步骤强制为单线程(并在一台计算机上)吗?

我有一个管道,该管道获取文件的URL,并下载这些文件,以生成除标题之外的每一行的BigQuery表行. 为避免重复下载,我想对照以前下载的表检查URL,并且仅在URL尚未存储在此“历史记录"表中的情况下继续存储它. 要执行此操作,我需要将历史记录存储在允许唯一值的数据库中,或者也可以更轻松地使用BigQuery进行访问,但是对表的访问必须严格按顺序进行. 是否可以仅在部分管道上强 ..

同时可变地访问保证不相交的大向量的任意索引

上下文 我有一种情况,其中多个线程必须更新存储在共享向量中的对象.但是,向量非常大,要更新的元素数量也相对较小. 问题 在最小的示例中,可以通过包含要更新元素索引的(哈希)集来标识要更新的元素集.因此,代码如下所示: let mut big_vector_of_elements = generate_data_vector(); while has_things_to_d ..
发布时间:2020-07-31 04:40:29 其他开发