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

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

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

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

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

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

7得票2回答
CMutex::Lock与CSingleLock::Lock的区别

我被指派支持一些遗留代码,但是在某些代码段中,我看到一些让我感到困惑的东西。例如,在某个类实例中,使用CMutex实例来同步方法执行。 class CClassA : public CObject { public: void DoSomething(); private: C...

7得票3回答
警告:格式‘%d’需要类型为‘int’的参数,但参数2的类型为‘long int’[-Wformat=]

这段代码涉及以下内容。 竞态条件: 调度器和编译器行为在进程或线程同步中起着重要作用。演示同步需求的最简单场景来自两个线程/进程尝试修改共享变量值所创建的竞态条件,这通常导致数据不一致和错误结果。以下示例演示了这种情况: 我对C语言很陌生,对此警告不太理解。这个警告是什么意思,怎么解决?我...

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

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

7得票2回答
Java中类锁和对象锁的区别

人们谈论两种多线程锁定——对象锁和类锁。据我所知,只有在对象上才能进行锁定。 案例1:我们使用new或工厂方法等创建的对象。 void synchronized myMethod(Type param) { //will lock on the instance used to cal...

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

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