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

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

46得票5回答
在使用双重锁定时,将单例实例设为volatile有什么意义?

private volatile static Singleton uniqueInstance 在单例模式中,使用双重锁定方法进行同步时,为什么需要将单个实例声明为volatile?如果不声明为volatile是否可以实现相同的功能?

112得票4回答
在发布模式下程序卡住了,但在调试模式下正常运行。

下面的代码在调试模式下按预期工作,完成后等待500毫秒,但在发布模式下无限期挂起: public static void Main(string[] args) { bool isComplete = false; var t = new Thread(...

10得票2回答
在Ruby中实现同步屏障

我想在Ruby中“复制”CUDA的__synchtreads()函数的行为。具体来说,我有一组需要执行一些代码的N个线程,然后所有线程在执行到某一点时互相等待,然后再继续执行其余的业务。例如: x = 0 a = Thread.new do x = 1 syncthreads() ...

22得票5回答
同时对一个大向量中任意保证不重叠的索引进行可变访问

背景 我有一个案例,多个线程必须更新存储在共享向量中的对象。然而,该向量非常大,需要更新的元素数量相对较小。 问题 在最小示例中,要更新的元素集可以由包含要更新元素索引的(哈希)集合来确定。因此,代码可能如下所示: let mut big_vector_of_elements = ge...

17得票6回答
Thread.join和Synchronized有什么区别?

当在多线程应用程序中使用Thread.join()和使用synchronization时,我感到困惑。 据我所知,它们都会阻塞或等待某个其他线程完成执行。 此示例必须按顺序一个接一个地输出10个A、10个B和10个C,如下所示:1 : A 2 : A 3 : A 4 : A 5 :...

9得票7回答
如何防止两个应用程序同时执行相同的任务?

如果您的应用程序中有两个线程,而且您不希望它们同时运行某个特定的代码段,您可以在代码周围放置一个锁,像这样: lock (someObject) { // ... some code } 但是如何在不同的进程之间做相同的事情呢?我认为这就是使用“全局互斥锁”的地方,所以我尝试了各...

9得票3回答
相比于有或没有争用的锁,原子/交错变量有多快?

相对于无争议的原子变量(例如 C++ 的 std::atomic<T> 操作),它的速度快/慢多少。 此外,有争议的原子变量相对于无争议的锁会慢多少? 我正在使用的架构是 x86-64。

17得票2回答
Volatile.Read/Write的理解

我正在尝试理解C#中的Volatile类。 据我的阅读: Volatile.Write方法在调用点强制将位置上的值写入。此外,任何早期程序顺序的加载和存储都必须发生在对Volatile.Write的调用之前。 Volatile.Read方法在调用点强制从位置中读取值。此外,任何较晚的程序...

30得票2回答
Interlocked.Exchange和Volatile.Write有什么区别?

Interlocked.Exchange和Volatile.Write有什么区别?两种方法都可以更新某个变量的值。能否有人总结一下何时使用它们? Interlocked.Exchange Volatile.Write 特别是我需要更新数组中的double项,并且我希望另一个线程看到最新的值...