问题标签 [starvation]
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.
operating-system - 进程会出现饥饿吗?
考虑使用非抢占式 SJF 调度的操作系统。如果给定一个假设有 10 个进程的工作负载,并且每个进程执行一个范围从 10 毫秒到 20 毫秒的 CPU 突发,然后是 500 毫秒的 I/O 突发,那么任何进程都会经历饥饿吗?
通过这个工作,我知道最短的进程首先被安排,并且无论哪个进程正在运行都会运行到完成,但我不明白如何确定是否有任何进程会因为资源从未被分配而被推迟,我想在继续之前知道,我想知道如何知道调度程序的工作量和类型?
c# - 实现没有饥饿的while循环以在wpf中重绘图像
我有一个 wpf 表单和一个画布,还有一个画布中的图像。我希望这张图片每隔 n 毫秒随机移动一次。我使用了while循环,但它被饿死了。所以我无法通过一个鼠标事件来实现这个动作,看看我对这个动作的想法有多好。这是我下面的代码:
我喜欢图像的移动,但现在我有同样的问题。我需要这个对象每隔 n 毫秒自动移动一次而不会饿死。这是我的理想代码如下:
我现在该怎么办?
java - 客户在困的理发师问题中等待理发时的信号量值?
我正在研究在昏昏欲睡的理发师问题中使用信号量值。我在想象这样一个场景,其中一位顾客已经和理发师在一起,然后其他 4 位顾客进入了理发店。候车室可容纳三个座位。我想知道理发师已经被占用的这种情况下的信号量值。
我知道,当理发师开店时顾客第一次进来时,我最终得到了这些信号量值:
这是我解决这个问题的伪代码:
当我试图追踪这段代码并且理发师已经被占用时,我不断得到barber = -1
.
我不确定这是否可以作为一个值,我只是感到非常困惑,如果有人可以帮助我跟踪伪代码以在这种情况下找到信号量值,我将不胜感激?我只看到过客户进来的例子,但没有看到其他在线场景。谢谢你。
kubernetes - 超额订阅的 Kubernetes 集群上的小 pod 饿死了大 pod
我们小组最近建立了一个 3 节点的 Kubernetes 集群,我们一直在使用Jobs来安排批处理任务。我们有很多工作要做,而不是在一个特别大的集群上做,所以在任何给定时间都有一堆“挂起”的 Pod 等待在集群上运行。
这些 pod 有不同的资源请求;有些比其他大得多。例如,有些 Pod 需要 4 GB RAM,有些需要 100 GB RAM。
我们遇到的问题是,只要有足够的小 pod 可用以保持集群繁忙,我们的大型 pod 就不会真正运行。一旦一个 4 GB 的 Pod 完成,Kubernetes 就会查看并看到一个 4 GB 的 Pod 可以容纳,而一个 100 GB 的 Pod 不适合,它会安排一个新的 4 GB 的 Pod。似乎从来没有决定一个 100 GB 的 Pod 已经等待了足够长的时间,并避免在特定节点上调度新的 Pod,直到足够的时间完成以使 100 GB 的 Pod 可以容纳在那里。也许它无法判断我们的 pod 来自作业并且预计最终会完成,这与 Web 服务器不同。
如何配置 Kubernetes 以确保小型 pod 不会无限期地饿死大型 pod?是否有某种具有这种行为的第三方调度程序需要我们添加到我们的安装中?或者有什么方法可以配置默认调度程序来避免这种行为?
java - 经典问题单车道桥问题的无饥饿解决方案
我试图为经典的单车道桥梁问题提供解决方案,其中单车道桥梁连接两个村庄。它只使用一个线程,因此如果农民同时跳到桥的任一侧,可能会陷入僵局。到目前为止,这是我的解决方案,但我不确定如何让它无饥饿?
multithreading - 这个单车道桥问题的解决方案如何不是没有饥饿的?
我这里有一个单车道桥问题的解决方案。我想知道这个解决方案如何不是无饥饿的?
问题是来自北方和南方的汽车到达一个单车道的桥。同向车辆可以同时过桥,相反方向的车辆则不能。
python - Python concurrent.futures 饥饿
我正在使用 Python concurrent.futures,执行父多线程,每个父线程执行子线程。当 ThreadPoolExecutor 少于所需的父线程数时,我会饿死并且程序卡住。
什么是最好的方法:
1. 使用 const ThreadPoolExecutor
2.不要挨饿
请在下面找到示例代码:
最好的问候, Moshe
java - 线程饥饿与争用?
根据有关“线程饥饿”的Oracle 文档,
饥饿描述了线程无法定期访问共享资源并且无法取得进展的情况。当共享资源被“贪婪”线程长时间不可用时,就会发生这种情况。
在关于线程“线程争用”的Oracle 文档中,
如果一个线程试图获取一个已经被另一个线程持有的锁,那么它必须等到锁被释放。发生这种情况时,就会出现所谓的锁“争用”。
其实,上面的定义是有一定道理的,我无法得到一个明确的定义来对比它们。谁能解释一下上述术语之间的区别以及它们之间的关系(如果有的话)?
注意:通过参考什么是线程争用的一些答案 ?,我觉得这些答案也不适用于“线程饥饿”吗?
java - Java多线程死锁或饥饿?
我正在为我的 OCP 考试学习,并试图理解我们何时谈论线程死锁或线程处于饥饿状态。如果出现以下情况,我有疑问。
在 doSomething() 中获取同步 ThreadTest 类的锁的第一个线程进入无限循环,永远不会释放锁。第二个线程一直等待直到资源可用(永远不会发生)。
我们是在说这种情况下的死锁还是饥饿?我想到了饥饿,因为一个线程无法访问共享资源,并且死锁线程会阻塞其他资源。但为了确保我在这里问这个问题。
死锁描述了线程被永远阻塞的情况。
饥饿描述了线程无法定期访问共享资源的情况。