问题标签 [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 投票
2 回答
1431 浏览

php - semop 调用的 EINTR 错误

我在 php 脚本中使用以下代码片段来安全地更新共享资源。

当我用大量请求对这段代码进行压力测试时,我得到一个错误:

php 源代码显示以下获取 SYSVSEM_SETVAL 失败的代码

这意味着 semop 因 EINTR 而失败。手册页显示 semop() 系统调用被信号中断。

我的问题是我可以安全地忽略此错误并重试 sem_acquire 吗?

编辑:我误解了这个问题,请参阅我在下面发布的说明。

拉吉

0 投票
3 回答
2951 浏览

multithreading - 如何在 Delphi 中实现线程安全的列表包装器?

我有一个列表包装器,它维护两个 Tstringlists 和一个 TClassList

我需要这是线程安全的,例如:

  • 不允许并发写入(应进入某种等待状态)
  • 不允许边读边写(反之亦然)(应进入某种等待状态)
  • 允许并发读取

关于如何做到这一点的任何想法?我的直觉告诉我它需要的不仅仅是一个关键部分,也许是一个信号量或“使用计数器”,也许其中之一与 CS结合使用。

我只是不太确定从哪里开始-从英语的整体方法到伪代码,再到 delphi 实现或外部链接,将不胜感激。

0 投票
4 回答
1400 浏览

queue - 是否可以仅使用 POSIX 信号量来避免唤醒等待竞赛?是良性的吗?

我想使用 POSIX 信号量来管理从代表队列的文件中获取和放置的原子。我想要在文件系统中命名某些东西的灵活性,以便完全不相关的进程可以共享一个队列。我认为这个计划排除了 pthreads。命名的 posix 信号量非常适合在文件系统中放置任何进程都可以看到的东西,但我找不到标准的 CondWait 原语:

当进程调用 CondWait 时,它会自动发布到 sem 并等待 cond。当其他一些进程发布到 cond 时,等待进程只有在它也可以自动递减 sem 时才会唤醒。的替代品

受到竞争条件的影响,其中一些其他进程在该进程等待它之前发出 cond 信号。

我几乎没有做过任何并发编程,所以我想我会问这样:如果我对条件变量使用标准的 POSIX 计数信号量,这场比赛有可能是良性的吗?

以防万一有人想要更大的上下文,我正在为可以从 shell 脚本调用的原子队列构建 get 和 put 操作。

0 投票
3 回答
26902 浏览

unix - System V 和 Posix 信号量之间的差异

使用 System V 和 Posix 信号量之间的权衡是什么?

0 投票
2 回答
607 浏览

php - PHP calling multiple videos to convert at once via mencoder.How can I limit it?

I recently installed my video script to a new server but I am seeing that it will start to convert 1 video (via mencoder) then before finishing it, it will try and convery another, and another, so it will be trying to convert 4+ videos at the same time causing the server to shut down. The script developer said:

"It converts each video in a PHP background process. There might be a way to limit the number of PHP background processes on your server and queue them."

So how is this done please?

Regards

0 投票
12 回答
23932 浏览

delphi - 如何判断我的程序的另一个实例是否已经在运行?

如何判断我的程序的一个实例是否正在运行?我以为我可以用数据文件来做到这一点,但它会很乱:(

我想这样做,因为我只希望在某一时刻打开 1 个实例。

0 投票
7 回答
65037 浏览

javascript - Javascript信号量/测试和设置/锁定?

Javascript 中是否存在诸如原子测试和设置、信号量或锁定之类的东西?

我有 javascript 通过自定义协议调用异步后台进程(后台进程实际上在一个单独的进程中运行,与浏览器无关)。我相信我正在陷入竞争状态;后台进程在我的测试和我的设置之间返回,在 javascript 方面搞砸了。我需要一个测试和设置操作来使它成为一个真正的信号量。

这是尝试检测后台进程并将它们排队的 javascript 代码:

call 是一个实现排队的单例;任何想要调用外部进程的人都会调用 Call.call("something") 。

有任何想法吗?

0 投票
1 回答
209 浏览

c++ - Windows API“国际象棋计时器”信号量事件

有没有像国际象棋计时器一样工作的信号机,意思是;

线程 A 完成其任务,循环回到顶部并调用 Semaphore

这会触发线程 2,线程 2 继续执行其代码,循环回到顶部并调用信号量

这会触发线程 A...

所以信号量既是阻塞的又是信令的。

我知道我可以只使用两个事件和 WaitForSingleObject,但我想知道是否有专门执行此操作的信号量?

在这个主题上,Event 有多“昂贵”,WaitForSingleObject() 在内存和 CPU 方面有多“昂贵”?

0 投票
5 回答
7585 浏览

java - Java 中的信号量问题与餐饮哲学家

我正在尝试在餐饮哲学家问题中学习信号量的基本要点。现在,我有一个 Chopstick 类数组,每个 Chopstick 都有一个带有 1 个可用许可证的信号量:

holder 变量用于我不确定是否需要的函数:

程序编译并运行,但似乎在释放筷子时遇到了一些麻烦。有时,筷子会松开,有时不会。当他们不释放时,程序最终会在所有筷子都被拿走并且一位哲学家饿了时挂断。

这是 Philosopher 类中的代码,用于在随机时间后释放筷子:

例如,我的程序确实输出“哲学家 0 吃完饭”,然后继续执行。另外两行从不输出,所以很明显我发布的方式有问题。

任何帮助表示赞赏。

0 投票
3 回答
914 浏览

java - Java:除了它们所属的对象之外,同步方法会锁定什么(如果有的话)?

现在,我不确定这是否是一个愚蠢的问题,如果是,请多多包涵。

对象上的锁是“递归的”吗,即如果两个对象在其字段中引用了第三个对象,并且一个线程正在两者之一上运行同步方法,那么任何其他线程都可以访问第三个对象吗?