semaphore

    0热度

    1回答

    我在下面有下面的代码。我只想要一半的线程一次输入线程函数。我如何创建一个Semaphore来阻止其他进程?当线程完成使用函数时,我将如何解除先前阻塞的进程? #include <iostream> #include <unistd.h> #include <sys/wait.h> #include <pthread.h> using namespace std; #define NU

    3热度

    2回答

    在我的应用程序中,按钮触击从Internet站点下载数据。该网站是包含二进制数据的链接列表。有时,第一个链接可能不包含正确的数据。在这种情况下,应用程序将获取数组中的下一个链接并从中获取数据。链接是正确的。 我遇到的问题是,当我点击按钮时,应用程序频繁(并非总是)会冻结数秒。 5-30秒后,正常解冻并下载工具。我明白,有些东西阻止了主线程。当停止在Xcode的过程中,我得到这个(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()? 顺便说一句: 哪里信号量存储在内部。我想知道他们为什么能在系统重启后幸存