8得票1回答
为什么std::mutex的速度比CRITICAL_SECTION慢两倍

std::mutex使用临界区实现,因此它比OS Mutex(在Windows上)要快得多。但是它不如Windows CRITICAL_SECTION快。 在单个线程中进行紧密循环的时间: 423.76ns ATL CMutex 41.74ns std::mutex 16.61ns w...

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

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

8得票1回答
一个被两个线程访问的共享队列的关键代码部分是什么?

假设我们有一个共享队列(使用数组实现),其中两个线程可以访问,一个用于从中读取数据,另一个用于向其中写入数据。现在,我有一个同步问题。我正在使用 Win32 API(EnterCriticalSection 等)来实现这个问题。 但是我的好奇心是,在队列的入队和出队操作中,临界区代码将是什么...

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

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

7得票2回答
C++中的关键段和返回值

在尝试从头创建一个线程安全的容器类时,我遇到了从访问方法返回值的问题。例如,在Windows中: myNode getSomeData( ) { EnterCriticalSection(& myCritSec); myNode retobj; // fill retob...

7得票6回答
使用EnterCriticalSection时出现的问题

我需要在多个线程中操作数组,因此我使用CRITICAL SECTION来独占地访问数据。 这是我的模板: #include "stdafx.h" #ifndef SHAREDVECTOR_H #define SHAREDVECTOR_H #include <vector> #i...

9得票4回答
在 Mutex 示例中出现未处理的异常 / 访问违规写入位置

我正在解决一个使用互斥锁保护全局双精度变量的示例,但是我遇到了错误 - 未处理的异常0x77b6308e在Lab7.exe中: 写入位置0x00000068的访问冲突0xC0000005。 我猜这与访问分数有关?(全局双精度变量) #include <windows.h> ...

11得票1回答
彼得森的解决方案在现代CPU架构上能正常工作吗?

我正在学习 Silberschatz, Galvin 和 Gagne 的 操作系统概念,涉及操作系统。在第229页上,书中关于Peterson's Solution的内容如下: 由于现代计算机体系结构执行基本的机器语言指令(例如加载和存储)的方式,无法保证 Peterson's soluti...

10得票3回答
为什么在Laravel 7中Cache::lock()返回false?

我的框架是Laravel 7,缓存驱动程序是Memcached。我想执行原子缓存的获取/编辑/放置操作。为此,我使用了Cache::lock(),但似乎不起作用。$lock->get()返回false(见下文)。我该如何解决这个问题? 为了测试,我重新加载了Homestead,并只运行了下面...

14得票2回答
.NET应用程序因GC线程死锁而挂起

我们的应用程序使用了托管 (C#) 和非托管 (C++) 代码混合,遇到了问题。基本上我们有一个exe调用一堆程序集,其中一个程序集是我们C++库的MC++包装器。该应用程序是控制台应用程序。大部分时间工作正常,但偶尔会无错误或异常而挂起。 使用内存转储和符号,我们能够在WinDbg中进行一...