semaphore

    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) 我一定要在这里做了错误的方式。

    1热度

    2回答

    我想通过一个例子来理解计数信号量的概念。但我想在Linux中使用SysV来实现这一点。 我熟悉二进制信号量的理论部分和计数信号量。 我已经提到这个link。 从概念上讲,信号量被用作从一个进程到另一个进程的信号机制,所以我试图编写一个简单的程序。 在下面的节目,我想thread_1等到它不会从thread_2得到一个信号,同样thread_2应该等到它不会从thread_3得到的信号。 从而使输出

    0热度

    1回答

    我试图实现一个等待N个进程继续的聚集函数。 struct sembuf operations[2]; operaciones[0].sem_num = 0; operaciones[0].sem_op = -1; // wait() or p() operaciones[1].sem_num = 0; operaciones[1].sem_op = 0; // wait until i

    0热度

    1回答

    之后执行程序,我在主函数fork中使用来创建2个进程。子进程做一些事情,父进程再次分叉,他的孩子调用另一个函数。两个函数都写入1个文件,并且所有工作都正常。 我需要的是在函数和所有进程(两个函数都创建进程)完成之后,将一些东西写到文件末尾。 我试图在主要位置编写fprintf命令,它总是在文件中间的某处写入,所以我认为主要和2个函数并行运行。 我试图用信号量 s = sem_open(s1, o_

    2热度

    1回答

    我正在通过Alamofire测试API。我需要对服务器进行一次调用,以便为集成测试做好准备。一旦完成,我已准备好开始运行测试。 通常override setUp()为每个测试运行,所以我不想这样做。 我因此选择覆盖class setUp()如下所述:https://developer.apple.com/reference/xctest/xctestcase 这一切都很好,但现在,我不再可以使用标

    0热度

    1回答

    我正在编写一个主要运行并发操作并访问一些不应该同时访问的对象的程序。 我第一次尝试锁定一个特定对象上的reentrentLock,但后来我发现它会导致饥饿,并且一些线程无法获得该锁定。 然后我想到了使用信号量,它会通过询问顺序给予许可。 那么,在Java中是否有公平的信号量的实现?

    -2热度

    2回答

    信号量可以取代互斥: 初始化SEM用1个 锁():做sem_wait(); (在关键部分sem = 0) unlock():do sem_post(1); 那么为什么我们需要互斥锁?

    0热度

    2回答

    我已经实现了用户级别的线程系统。我需要一些帮助来实现计数信号量,使用二进制信号量实现(上下函数如下所述)。 这里是我的执行二进制信号的接口: typedef enum BinSemStatus{ locked, unlocked } BinSemStatus; struct semaphore { BinSemStatus status; int bid; };

    -2热度

    1回答

    可以用汇编语言编写与XCHG指令这样锁定一个互斥体的功能: mutex_lock: MOVE REGISTRO,#1 XCHG REGISTRO,MUTEX CMP REGISTRO,#0 JZE ok CALL thread_yield JMP mutex_lock ok: RET mutex_unlock: