问题标签 [semaphore]

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.

0 投票
3 回答
32752 浏览

c - OS X 上的 sem_init

我正在编写一些使用 pthread 和 semaphore 库的代码。该sem_init功能在我的 Ubuntu 机器上运行良好,但在 OS X 上该sem_init功能完全没有效果。图书馆有什么问题还是有不同的方法?这是我用来测试的代码。

sem_init这些值似乎是随机数,调用后它们不会改变。

0 投票
1 回答
5752 浏览

c# - C#中的信号量超时机制

有谁知道.NET 如何处理调用超时Semaphore.WaitOne(timeout)

我希望有一个TimeoutException,但 MSDN 文档没有在预期异常列表中列出它,而且我似乎无法在任何地方找到它的文档。

0 投票
3 回答
2659 浏览

windows - 在信号量上设置访问权限?

我假设一旦进程创建了信号量,任何进程/用户都可以访问它。

是否可以对特定信号量设置访问限制,以便只有某些进程/用户可以访问它,或者只有某些进程可以释放信号量。
如果我们让所有进程都可以访问信号量,我会发现一些问题。例如:一个虚拟进程可以读取信号量并释放锁,从而向真正等待信号量锁的实际进程发出错误信号。

所有这些问题都出现了,因为我使用以下代码片段得到了非常奇怪的输出:

通过运行上述程序,我得到以下输出

输出显示它无法创建信号量,甚至无法打开信号量。如果已存在具有给定名称的信号量,则创建信号量可能会失败。我不明白为什么打开信号量失败。

有些人可以澄清创建信号量和打开信号量都失败的情况。

0 投票
3 回答
33254 浏览

c# - c#中的互斥量和信号量是什么?我们需要在哪里实施?

C# 中的互斥量和信号量是什么?我们需要在哪里实施?

我们如何在多线程中使用它们?

0 投票
7 回答
16833 浏览

c - C 信号量和线程之间的“屏障”

我正在尝试解决我们的操作系统教授在之前的考试中向我们展示的一个问题,以便为下一个考试做准备。

问题是有两个线程同时执行并且可能在不同的时间内完成。特定线程完成后,需要阻塞,直到另一个线程完成,然后它们才能继续执行。

对我来说,这在概念上似乎很简单,但我的代码并没有按照我认为的方式工作。

我期望看到的是两个线程都计数到 10,然后两个“最终值”printf彼此相邻发生。但是,我看到的是线程完成计数到 10 后立即发生的“最终值”打印 - 它似乎没有等待。

sem_val对于我在“发布到 N”中打印的整数,我也得到了非常奇怪的值printf,例如:

任何想法/提示?

0 投票
2 回答
3159 浏览

testing - 先进先出信号量测试

我已经实现了 FIFO 信号量,但现在我需要一种方法来测试/证明它们是否正常工作。一个简单的测试是创建一些线程尝试在信号量上等待,然后打印带有数字的消息,如果数字按顺序排列,则它应该是 FIFO,但这不足以证明这一点,因为该顺序可能有偶然发生的。因此,我需要一种更好的测试方法。
如有必要,也可以使用锁或条件变量。
谢谢

0 投票
1 回答
355 浏览

c# - 信号量控制的资源 - 什么是干净的关闭顺序/模式

如果我用信号量控制一个资源池,这个资源池的干净关闭顺序是什么?

如何为此池实施干净的关闭顺序?也许资源使用 IDisposable,这最终应该发挥作用。

0 投票
3 回答
1812 浏览

semaphore - Multiprocess Synchronization with a Single Semaphore

We're covering multithreaded programming in a class I'm taking. The professor offered a bonus question that I have been trying, to no avail, to figure out:

Each of processes P0, P1, P2 and P3 have to wait for the other three to cross or reach a particular synchronization point in their code, and only then may that process cross its own synchronization point.

I already know how to answer the question with four semaphores, the hard part is doing it with only one semaphore.

Any suggestions or hints as to how to proceed?

0 投票
2 回答
1604 浏览

multithreading - “benaphores”值得在现代操作系统上实施吗?

回到我作为 BeOS 程序员的日子里,我读了 Benoit Schillings 的这篇文章,描述了如何创建一个“Benaphore”:一种使用原子变量来强制执行关键部分的方法,从而避免了在常见的情况下获取/释放互斥锁的需要(无争用)情况。

我认为这相当聪明,而且您似乎可以在任何支持原子增量/减量的平台上执行相同的技巧。

另一方面,这看起来可以很容易地包含在标准互斥锁实现本身中......在这种情况下,在我的程序中实现这个逻辑将是多余的并且不会提供任何好处。

有谁知道现代锁定 API(例如 pthread_mutex_lock()/pthread_mutex_unlock())是否在内部使用这个技巧?如果没有,为什么不呢?

0 投票
2 回答
973 浏览

blackberry - 黑莓信号量类

我似乎在 Blackberry Java Reference 中找不到任何与 Semaphore 等效的东西。我错过了什么?java.util.concurrent 甚至不存在。

谢谢!肖恩