semaphore

    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:

    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