127得票8回答
OpenMP中的atomic和critical有什么区别?

OpenMP中atomic和critical的区别是什么? 我能做到。#pragma omp atomic g_qCount++; 这不就跟#pragma omp critical g_qCount++; ?

76得票2回答
x86架构中的“PAUSE”指令的目的是什么?

我正在尝试创建一个简单版本的自旋锁。在浏览网页时,我发现了x86中称为“PAUSE”的汇编指令,用于向处理器提示此CPU上当前正在运行自旋锁。英特尔手册和其他可用信息说明,大多数情况下,处理器使用此提示来避免内存顺序违规,从而极大地提高了处理器性能。因此,建议在所有自旋等待循环中放置PAUSE...

70得票5回答
什么是临界区的进展和有界等待?

我正在阅读Peter B. Galvin的《操作系统概念》中的“临界区问题”章节。根据书中所述: 1)进展是指:如果没有任何进程在其临界区执行,同时一些进程希望进入其临界区,则只有那些没有在其余部分执行的进程可以参与决定下一个将进入其临界区的进程,并且这个选择不能无限期地推迟。 并且 2...

38得票5回答
我需要在读取对象时进行锁定吗?

我正在编写一个程序,其中有一个对象被多个线程共享: A)多个写线程向对象中写入数据(所有线程都运行相同的功能) B)一个读取线程每 5 秒钟访问该对象 C)一个读取线程在有用户请求时访问该对象 很显然,在向对象中写入内容时需要对其进行锁定,因为我们不希望多个线程同时写入该对象。 我的...

33得票3回答
如何在OpenMP中使用锁?

我有两段运行在不同核心上的C++代码,它们都向同一个文件写入内容。 如何使用OpenMP并确保没有崩溃?

23得票7回答
关键区段总是更快吗?

我正在调试一个多线程应用程序,并发现了 CRITICAL_SECTION 的内部结构。我觉得 CRITICAL_SECTION 数据成员 LockSemaphore 很有趣。 它看起来像是一个自动重置事件(尽管名称中暗示了它是一个信号量),当第一次有一个线程等待被其他线程锁定的 Critic...

22得票3回答
如何在Node.js中锁定被多个异步方法共享的对象?

我在nodejs中有一个对象,其中包含不同的属性。有许多异步函数访问并修改该对象,并且执行方式非常复杂。单个异步函数可能具有内部回调(或异步函数),这些回调可能需要一些时间才能执行,然后该函数将修改该对象。 我想锁定该对象,直到我完成所有修改,只有在此之后,任何其他异步函数才能访问它。 示例...

22得票5回答
更快的TMultiReadExclusiveWriteSynchronizer?

有没有更快的TMultiReadExclusiveWriteSynchronizer类型呢?比如FastCode? 从Windows Vista开始,微软添加了Slim Reader/Writer lock。它比Delphi的TMultiReadExclusiveWriteSynchroni...

20得票6回答
C#中锁定语句的困惑

这是来自 MSDN 的内容: lock 关键字确保在一个线程进入“临界区”时,另一个线程不会进入相同的“临界区”。 “a critical section” 必须与“the critical section”相同吗? 还是它意味着: lock 关键字确保在一个线程进入由对象保护的“任何临界...

20得票3回答
嵌套临界区是否有效?

比如说,这样做是否有效?CRITICAL_SECTION cs; ::InitializeCriticalSection( &cs ); ::EnterCriticalSection( &cs ); // First level ::EnterCriticalSe...