11得票6回答
Java中同步块的替代方法

我使用以下代码来确保 startTime 变量仅设置一次:public class Processor { private Date startTime; public void doProcess() { if(startTime == null) ...

7得票3回答
多线程用于向Web服务发出HTTP POST请求

我想在C#中向Web服务发送多个HTTP POST请求。例如,如果n=3,则应从3个xml文件中进行http post请求,并且响应应写入文件。一旦完成了前3个请求,就会进行下一个3个请求。 因此,我编写了以下代码,但是一开始我得到了随机输出。但现在我要么在内部for循环中获得索引范围异常,要...

11得票1回答
Kotlin的`?.let`是线程安全的吗?

Kotlin的?.let是否线程安全? 假设一个变量a可以在不同的线程中更改。使用a?.let { /* */ }是否线程安全?如果它等价于if (a != null) { block() },那么在if中它不为null,在block中它会变成null的情况是否可能发生?

8得票3回答
无锁数据结构需要多少个ABA标记位?

在无锁数据结构中,解决ABA问题的一个流行方案是使用额外单调递增标签对指针进行标记。 struct aba { void *ptr; uint32_t tag; }; 然而,这种方法存在问题。它非常缓慢并且具有巨大的缓存问题。如果我放弃标签字段,我可以获得两倍...

10得票2回答
Volatile.Read / Volatile.Write 对于 "double" 类型的变量是原子操作吗?

MSDN指出: 对于其他类型的读写操作,包括long、ulong、double和decimal,以及用户定义的类型,不一定是原子操作。 C# 7.0草案规范 - 变量 - 9.6 变量引用的原子性 Volatile.Write(Double, Double)能作为原子操作吗?如果可以...

39得票3回答
Java内存模型:volatile变量和happens-before关系

我想澄清一下volatile变量如何与happens-before关系配合工作。让我们假设有以下变量:public static int i, iDst, vDst; public static volatile int v; 以及线程A:i = 1; v = 2; 和线程B:vDst = v...

8得票2回答
Kotlin并发编程之ConcurrentHashMap

我正在尝试支持对一个定期清除的哈希表进行并发操作。我有一个缓存,存储一段时间内的数据。每隔5分钟,缓存中的数据会被发送到服务器。一旦我刷新了缓存,就想清空它。问题是,当我在执行这个操作时,可能会有数据被写入到这个映射表中,使用了已存在的键。如何使这个过程线程安全? data class A(...

7得票2回答
Java - 在执行I/O操作时线程的状态

假设一个Java线程执行一些I/O操作,比如用传统的阻塞Java I/O读取文件。 问题是:当等待时,线程的状态是什么? 我不知道它是运行中(进行某种主动等待)还是等待中(也许有一种监视器在文件数据准备好时唤醒线程)。 我该如何找出来? 谢谢。

20得票3回答
一个可观察对象的同步机制

假设我们需要同步访问共享资源的读写操作。多个线程将同时对其进行读写访问(大部分情况下为读取,有时为写入)。假设每次写入都会触发读取操作(该对象是可观察对象)。 针对这个例子,我将想象一个类,如下所示(原谅语法和风格,仅供说明用途): class Container { public...

7得票2回答
C++多线程同步

这里是我问题的简化版本。 有N个线程在无限循环中执行以下3条指令: A -> B -> C -> A -> B -> C -> A -> B -> ....... 我希望所有线程都能同时执行指令B,即只有当所有线程都到达B时,任何一个线程...