semaphore

    1热度

    2回答

    我想做一个程序,从0到C中的命令行中输入的任何数字进行计数。在此程序中,必须有两个fork()调用,从而总共创建3个进程。我必须使用至少1个信号量来确保进程以数字顺序运行,每个负责不同的n%3. 我遇到的问题是,尽管我使用了信号量,该计划似乎在相当经常的基础上失灵。我目前使用的是门式系统,其中每个进程都会强制它自己指定的信号量等待,一旦完成,sem_post是下一次应该运行的进程的信号量。我知道这

    1热度

    1回答

    我想使用信号量来实现监视器。我创建了2个课程。缓冲区和ThreadDemo。在Buffer类,我创建方法的put()和get()(我得到的代码从此页) public void put(int input) throws InterruptedException { monitorSemaphore.acquire(); boolean acquired = false;

    0热度

    1回答

    什么我目前工作的要求夫妇POSIX信号到多个进程将运行在函数中被初始化,并且信号灯将与这些加工也将运行的另一个功能共享。我该如何解决这个问题,以便信号量只能由一个线程创建,而其余的只能打开它们?我似乎无法找到任何有关如何在任何地方做到这一点。 所有我能找到关于这个问题是关于如何使用sem_wait()和sem_post()函数,但没有具体到我的问题。我还必须确保一个文件只创建一次并由其他进程打开,

    0热度

    1回答

    比方说,我有3个进程,包括父进程我必须按P3,P1,P2的顺序执行I程序。伙计们请帮我一下,我怎样才能从P3进程开始计算。 我需要出去为{0,1,2,3,4,5,... MAX} 对于参考我的代码快照是: - #define SEM_NAME "//test.mutex" //#define SEM_NAME2 "//test2.mutex" int main(int argc, char

    1热度

    2回答

    我很难理解如何在使用信号量的两个进程之间交替控制。这是流程处理代码的一个人为的例子。 int pid = fork(); if (pid) { int counter = 0; while (true) { counter += 1; printf("P%d = %d", pid, counter); } } else { int

    2热度

    1回答

    它们都使用计数器并使用锁来保护计数器的递增和递减,并且当计数器小于零时,线程将等待。在我看来,除了他们的API之外,他们是一样的。

    0热度

    1回答

    刚刚观看了一个关于信号量的视频,并试图挖掘更多信息。不太清楚信号灯如何在组件级别上工作。 P(s): s = s - 1 if (s < 0) {wait on s} CRITICAL SECTION V(s): s = s + 1 if(threads are waiting on s) {wake one} 我明白这些功能背后的概念是什么,但

    1热度

    1回答

    在Linux中,我使用命名信号来控制对不同进程使用的系统资源的访问。 如果系统意外崩溃,可能会发生信号已被获取但尚未返还。鉴于这种情况,我注意到,即使重启后信号量仍然保持锁定状态。 为了克服这种情况,是否可以在系统启动时取消信号量的链接,然后再使用一个或多个进程?或者,直到信号量发布之前,最好是给它一个sem_post()? 顺便说一句: 哪里信号量存储在内部。我想知道他们为什么能在系统重启后幸存

    0热度

    1回答

    我正在阅读本主题中提到的书,有一件事情让我感到困扰。阻隔,解决的办法是以下(伪)代码: 1 rendezvous 2 3 mutex.wait() 4 count = count + 1 5 mutex.signal() 6 7 if count == n: barrier.signal() 8 9 barrier.wait() 10 barrier.signal() 11

    0热度

    1回答

    所以我有一个教堂问题,我似乎无法弄清楚。我有一个可以设置大小的队列。唯一的是它是设置大小,并用一堆0填充队列(这是有道理的)。我试图用null而不是数字值填充队列,所以稍后当我使用add方法时,我可以检查队列是否为空。我附加了如何设置一切的图像。让我知道你们是否有任何指导或想法。 是我得到的错误是: 错误:在分配从字符串类型不匹配为int(64) 我一定要在这里做了错误的方式。