semaphore

    0热度

    1回答

    我一直在尝试编写一个程序,在这里我模拟使用线程和信号量的最短的第一个工作算法。当主线程告诉他这样做时,每个线程负责打印其ID。主线程(main)将控制何时将这些作业打印在屏幕上。以下是我想出来的,但我似乎做错了,我无法弄清楚。我设法让它打印出相应的作业,但它总是失去10个。文件格式是“id(char)arrival(int)burst(int)”。所以我非常需要帮助,因为我有一直在尝试无数的事情,

    0热度

    1回答

    我一直在试图学习这个简单的门票销售计划的信号量。唯一的问题是当前的信号量不能保护numTickets和ticketsSold的值。我发现这是因为有时卖出的总票数加起来最多为51. 是否正确执行信号量? #include <semaphore.h> #include <stdio.h> #include <pthread.h> #include <unistd.h> #include <ti

    -6热度

    1回答

    灯光开关信号的正确替代形式应该如何在非面向对象的C语言中看起来像? lightswitch信号灯的Python参考文件写在这份文件Little Book Of Semaphores中。 的LightSwitch代码: class Lightswitch : def __init__(self): self.counter = 0 self.mutex = Semap

    0热度

    2回答

    我的疑问涉及同步使用相同方法的不同类的线程的方式。我有两个不同的类,ClientA和ClientB(显然扩展了Thread)和一个Server类的方法。这两个ClassA和ClassB线程必须使用此方法,但也有对接入不同的策略: 如果ClassA线程使用方法内部的资源,同一类的其他线程可以用它; 如果线程ClassB正在使用该方法,则没有人(线程为ClassA和ClassB)可以使用它(互斥)。

    0热度

    1回答

    我有一个方法,接受一个值,如果满足条件的行动不应该运行24小时。但是当它停止时,我想运行其他不符合该条件的线程。 在这个例子中,我有30个线程在程序的开头。一旦我制作了5块芝士,我就需要停下来,因为那里的芝士太多了。最棒的是,如果有一个地方可以发送线程,那么在时间耗尽而其他人正在运行时,线程将无法启动。即使使用Wait,Task.Delay在这里似乎也不会有效。 这里是我的代码示例: //Stop

    1热度

    1回答

    在按下JButton后,我的程序的UI会冻结一段时间。我发现这是一个信号量堵塞Swing线程的原因。这是一个包含信号量的acquire()调用的方法: private void fetch(int numThreads) { //some code here sem = new Semaphore(numThreads); for (int i = 0; i < mo

    0热度

    1回答

    尝试在GCDAsyncSocket队列上创建信号量并获取nil,而不是......我在这里丢失了什么? dispatch_semaphore_t s = dispatch_semaphore_create(0); // s == nil here !?! dispatch_async(dispatch_get_global_queue(DISPATCH_

    0热度

    1回答

    我正在解决有关线程的分配问题。 这是关于排序随机小写字符。 当它排序良好时,我打印出O标记和否,使用2个线程打印出X. 。 我需要使用信号量编写代码,但我不知道如何以及在哪里编写sempahore。 所以一旦我没有信号写代码。 我现在应该添加Sempahore。但我不知道要修复哪个部分。 你能帮我吗? 我是否必须为信号灯制作更多功能? 这是我在C.

    0热度

    1回答

    我有一个队列,在不同的中断发生时调用队列的put和pull函数。有没有办法在这种情况下防止竞争状况? 虽然我们不能等待中断服务例程中的信号量,但创建类似功能的最佳方式是什么。 我们使用Zynq FPGA的ARM-Cortex A5处理器来开发代码。

    2热度

    1回答

    我正在构建一个Jenkins作业,它将一直运行我所有的分段测试,但不是一次全部(它们都依赖于共享硬件)。所以,我创建了并行作业,并使用信号量来确保只有有限的数量一次运行。 这里是我的管道再现问题的简化版本: import java.util.concurrent.Semaphore def run(job) { return { this.limiter.acquire()