问题标签 [mutex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Boost 的作用域互斥锁和 WinAPi 的临界区有区别吗?
在 Windows 环境中,Boost 的作用域互斥锁是使用 WinAPI 的关键部分还是其他什么?
multithreading - 静态类的析构函数需要互斥锁吗?
我们有一个静态(单例)类,它将在多线程环境中使用。我们在其构造函数和其他 mrmber 函数中使用互斥锁。但是,析构函数没有互斥锁。析构函数执行一些任务,例如清理其他一些成员对象等。我们是否还需要在析构函数中使用互斥锁?
c++ - pthread_mutex_lock 上的分段错误
我尝试做时遇到分段错误
这真的很奇怪,我不确定是什么原因造成的。我已经在构造函数中初始化了 _mutex
我能做什么?
c# - .NET:使用 Mutex 确保一次只调用一次 Web 服务
我正在使用互斥锁来确保 Web 服务一次只运行一次,但我无法使用 WaitOnce 和 ReleaseMutex 100% 正确地实现它。
我有这个:
如果我尝试立即访问 web 服务两次,第二次调用不会返回 false,但我从 mutex.ReleaseMutex 获得 ApplicationException(“objectsyncronization 方法是从 onsyncronized 代码块调用的” - 大致翻译自瑞典语)
最好的方法是什么?
c# - 可靠地检测到我的另一个应用程序正在运行
我有两个应用程序,一个 WinForms 应用程序和一个 Windows 服务,它们都将在同一台机器上运行。我希望 WinForms 应用程序能够可靠地检测服务何时运行。我可以完全控制这两个应用程序的设计和实现。
我的第一个想法是使用Mutex,由服务实例化并由 WinForms 应用程序检测到。
有更好的设计吗?
c++ - 在持有 boost::interprocess::scoped_lock 时休眠会导致它永远不会被释放
我正在使用参考(匿名互斥锁示例)在Linux上进行IPCboost::interprocess::shared_memory_object
。
有一个服务器进程,它创建shared_memory_object
并写入它,同时将一个interprocess_mutex
包裹在一个scoped_lock
;中。和一个客户端进程,它打印另一个人写的任何东西——在这种情况下,它是一个int
.
我遇到了一个问题:如果服务器在持有互斥锁时休眠,则客户端进程永远无法获取它并永远等待。
错误的服务器循环:
服务器输出:
客户端循环:
客户端输出(永远等待):
问题是,如果我将括号移到sleep
通话前的那一行,一切正常。为什么?我不认为与锁定的互斥锁一起睡觉会导致互斥锁永远被锁定。
我唯一的理论是,当内核唤醒服务器进程时,作用域结束并释放互斥锁,但等待进程没有机会运行。然后服务器重新获取锁......但这似乎没有多大意义。
谢谢!
c++ - boost shared_mutex(多次读取/一次写入)的示例?
我有一个多线程应用程序,它必须经常读取一些数据,并且偶尔会更新这些数据。现在,互斥锁可以安全地访问该数据,但它很昂贵,因为我希望多个线程能够同时读取,并且仅在需要更新时将它们锁定(更新线程可以等待其他线程完成) .
我认为这boost::shared_mutex
是应该做的,但我不清楚如何使用它,也没有找到一个明确的例子。
有没有人有一个简单的例子可以用来开始?
c++ - C++/GLFW - 使用 Mutex 对象的正确方法?
我正在研究一个广泛使用多线程的模拟。问题是,到目前为止,我从未使用任何互斥对象来保护我的数据。结果是我遇到了一堆分段错误。
我正在尝试在读/写时使用互斥锁锁定/解锁,但这会导致我出现另一个段错误:
当然,我创建了一个测试项目,在该项目中我应用了锁定/解锁的基本情况并且它起作用了,这是一个基本示例,展示了如何使用 GLFW 处理 Mutex 对象:
我正在工作的项目更大,我有 5 个线程在上面运行,并且同时访问了很多向量、地图、队列。在代码的某处,我尝试执行以下操作:
之所以将我的 VehicleManager:CreateVehicles() 方法放在锁定/解锁之间,是因为在此方法中有这一行:
所以我想保护向量:vehicles_。但是,结果我得到了上面的段错误。即使有:
我有同样的段错误。
我希望,我已经让自己足够清楚,让您了解我的问题的本质。我想,并不是所有人都使用过 GLFW,这就是为什么我给你第一个基本示例,以便你了解互斥锁如何与这个库一起工作。
谢谢 !
c++ - 不锁定 pthread_cond_timedwait 和 pthread_cond_signal 的互斥锁(在 Linux 上)
调用 pthread_cond_timedwait 而不先锁定相关联的互斥锁,并且在调用 pthread_cond_signal 时也不使用互斥锁,是否有任何缺点?
就我而言,确实没有条件检查,我想要一个与 Java wait(long) 和 notify() 非常相似的行为。
根据文档,可能存在“不可预测的调度行为”。我不确定那是什么意思。
一个示例程序似乎可以在不首先锁定互斥锁的情况下正常工作。
c# - 如何避免多个应用程序实例?
我有一个应用程序“myprogram.exe”,它调用 dll 中的函数和代码,其中一个“myprogram.exe”调用的函数创建了一个新的 winform 实例“MyForm.cs”,然后使用表单显示它。显示();。
我可以运行“n”个“myprogram.exe”实例,但我希望每个“myprogram.exe”实例只有一个“MyForm.cs”实例。
我遇到的问题是,即使我在“MyForm.cs”中使用互斥锁来创建互斥锁,他们也会询问它的实例是否已经在运行,有时,它会创建另一个实例,尽管有互斥锁。
是否有另一种方法可以用来验证“myprogram.exe”的实例是否已经创建了“MyForm.cs”的实例。