mutex相关内容

关键部分与计算信号量有什么关系?

Some people说您应该使用互斥锁来保护共享资源(即临界区),而信号量应该用于发送信号,反之亦然。因此,据我所知,信号量与临界区无关。 然而,包括Wikipedia在内的许多其他文章都指出信号量是用来解决临界区问题的。说二进制信号量解决临界区问题是否更正确,因为它们基本上充当互斥锁,而计算信号量则是另一回事,不属于“资源保护器”类别? 推荐答案 计数信号量可用于资源保护,但 ..
发布时间:2022-05-11 20:26:54 其他开发

Azure函数返回唯一序列号

我是新来的Azure。我想创建一个返回序列号的函数。我已经使用线程互斥锁创建了一个函数来锁定序列号。我用大约10k个并行请求测试了下面的代码。问题是我在做测试时得到了重复的序列号,互斥体不工作。我不确定如何避免重复,而是为每个请求生成流水号 Public class MySharedMutexCounter { public static long count = 0; publ ..

使用c++中的互斥执行多线程,一次运行一个线程。

我有一个100请求(整数)数组。我想创建4个线程并调用一个函数(THREAD_Function),并使用此函数希望每个线程逐个接受请求: (thread0->;quest0, 线程1->;请求1, 线程2->;请求2, 线程3->;请求3 然后thread0->;请求4直到100),所有这些都是通过使用互斥锁来实现的。 以下是我到目前为止编写的代码 ..
发布时间:2022-04-08 23:04:27 服务器开发

与MongoDB互斥

我有多个服务器共享一个公共MongoDB。在数据库中有一个作业列表,服务器必须完成。由于我希望在所有服务器上分担负载,并希望避免多台服务器执行相同的作业,因此我希望锁定该作业。 我的想法是: 如果元素尚未获取,则将其设置为获取: db.collection.update({done: false, taken: false},{$set: {taken: true, takenB ..
发布时间:2022-04-08 23:01:49 其他开发

C++的双重检查锁有什么潜在的问题吗?

这里有一个用于演示的简单代码片段。 有人告诉我复查锁是不正确的。由于变量是非易失性的,编译器可以自由地对调用重新排序或对其进行优化(有关详细信息,请参阅codereview.stackexchange.com/a/266302/226000). 但我真的看到这样的代码片段确实在许多项目中使用。有谁能解释一下这件事吗?我用谷歌搜索了一下,和朋友们聊了聊,但我仍然找不到答案。 #in ..
发布时间:2022-04-08 22:56:51 C/C++开发

测试和设置是做什么用的?

在阅读了测试和设置 维基百科条目之后,我仍然留下一个问题“Test-and-Set 将用于什么?" 我知道您可以使用它来实现 Mutex(如维基百科中所述),但它还有什么其他用途? 解决方案 您在完成一些工作后想要将数据写入内存时使用它,并确保自您启动以来另一个线程没有覆盖目标.许多无锁/互斥算法采用这个表格. ..
发布时间:2022-01-25 12:47:41 其他开发

在 Ruby 中为互斥锁使用类实例变量

注意:下面显示的代码摘要不是我遇到问题的代码的提炼.因为其他人已经回答了,所以我把这个原始摘要留在这里,但是实际代码显示在我在下面提供的答案中. 我无法将其隔离为一个小的失败测试用例,但我遇到了以下一般构造的失败: 类 Foo@mutex = Mutex.new……def self.bar@mutex.synchronize { ... }结尾结尾 如果我创建多个调用 Foo.bar 的 ..
发布时间:2022-01-22 20:40:13 其他开发

如何跨网络互斥?

我有一个在网络上运行的桌面应用程序,每个实例都连接到同一个数据库. 那么,在这种情况下,我如何实现一个互斥锁,该互斥锁适用于连接到同一数据库的所有正在运行的实例? 换句话说,我不希望这两个以上的实例同时运行相同的功能.如果一个已经在运行该函数,则其他实例不应访问它. PS:数据库事务不会解决,因为我不想互斥的功能不使用数据库.我提到数据库只是因为它可以用来在运行的实例之间交换信息 ..
发布时间:2022-01-22 20:38:58 其他开发

对 pthread 互斥体所涉及的完整内存屏障的说明

我听说在处理互斥体时,必要的内存屏障由 pthread API 本身处理.我想了解有关此事的更多详细信息. 至少在最常见的架构上,这些说法是否属实? 编译器是否识别此隐式屏障,并在生成代码时避免重新排序操作/从本地寄存器读取? 什么时候应用内存屏障:成功获取互斥锁后和释放后? 解决方案 POSIX 规范列出了必须"与其他线程同步内存",包括pthread_mutex_lock() ..
发布时间:2022-01-22 20:36:00 其他开发

线程和简单的死锁治疗

在使用互斥锁和信号量处理线程(特别是在 C++ 中)时,是否有一个简单的经验法则可以避免死锁并实现干净的同步? 解决方案 一个好的简单经验法则是始终以一致的可预测顺序从应用程序的任何位置获取锁.例如,如果您的资源有名称,请始终按字母顺序锁定它们.如果他们有数字 id,请始终从最低到最高锁定.确切的顺序或标准是任意的.关键是要保持一致.这样你就永远不会陷入僵局.例如. 线程 1 锁定资 ..
发布时间:2022-01-22 20:27:58 C/C++开发

如何同步访问 NAS 上的文件的两个进程?

事情是这样的:我有两个应用程序,用 C++ 编写并在两台具有不同操作系统(一台 Linux 和一台 Windows)的机器上运行.其中一个过程负责更新 NAS(网络附加存储)上的 XML 文件,而另一个则读取该文件. 是否可以同步这两个进程以避免在修改文件的同时读取文件? 解决方案 您可以在服务器上创建一个锁文件,该文件在您执行写入之前创建,等待然后写入并在完成时删除.让读取过程检查 ..
发布时间:2022-01-22 20:26:22 C/C++开发

使用条件变量在 Linux 中实现 Windows 事件?

我正在尝试在 Linux 中实现非常简单的 Windows 事件.仅适用于我的场景 - 3 个线程,1 个主线程和 2 个辅助线程.每个辅助线程通过 SetEvent 引发 1 个事件,主线程等待它.示例: int main(){无效*事件[2];事件[0] = CreateEvent();事件[1] = CreateEvent();pthread_start(线程,事件[0]);pthread ..
发布时间:2022-01-22 20:25:32 服务器开发

Linux 与 FIFO 等待队列同步

在等待队列为 FIFO 的 Linux 中是否有锁?这似乎是一件很明显的事情,但我刚刚发现 pthread 互斥锁不是 FIFO,信号量显然也不是 FIFO(我正在研究内核 2.4(作业))...... Linux 是否有一个带有 FIFO 等待队列的锁,或者有没有一种简单的方法可以使用现有的机制来实现? 解决方案 这是一种基于 pthreads 原语创建简单排队“票证锁"的方法.它 ..
发布时间:2022-01-22 20:10:22 服务器开发

C# - 如何获取 Mutex 的所有者名称

我在 2 个应用程序之间有一个共享互斥锁.我想创建一个显示互斥锁当前所有者名称的管理控制台. 如何获取当前拥有 Mutex 的应用程序名称? 解决方案 我不相信这在用户模式级别是可能的.您必须安装驱动程序或内核插件才能获取此信息. 这和问“什么进程打开了这个文件"几乎是同一个问题? ..
发布时间:2022-01-22 20:06:44 C#/.NET

使用进程间同步对象同步 2 个进程 - Mutex 或 AutoResetEvent

考虑以下场景:我正在运行我的应用程序,该应用程序在执行期间必须运行另一个进程,并且只有在第二个进程完成内部特定初始化之后,我的第一个进程才能继续.例如: ...//Process1 代码在这里进行各种初始化Process.Start("Process2.exe");//等到 Process2 完成其初始化,然后才继续(Process2 不退出)... 我看到了几个选项: 互斥锁 - 在考 ..
发布时间:2022-01-22 19:55:32 C#/.NET