semaphore相关内容

查找在POSIX信号量上阻塞的任务数

是否可以通过某种方式知道在特定信号量上等待的进程或线程的数量? 就像一个API来检查值. Sem_getvalue()仅返回0,而不是一个负数,其绝对值是某些站点上提到的信号量上阻止的任务数. 任何帮助都会很棒. 提前谢谢! 解决方案 也许您可以在调用 sem_wait 之前减小全局 atomic_t 变量并将其递增遇到信号量的话. ..
发布时间:2020-05-29 18:49:19 服务器开发

共享名为POSIX的信号量

我在理解如何在多个进程之间共享POSIX信号时遇到问题.我正在尝试执行以下操作: 1.生产者初始化一个信号量 2.生产者将10个令牌发布到该信号量,并在此之前睡眠1秒 3.消费者从信号量中获取令牌 当我启动生产者时,出现分段错误(核心已转储).此外,我不确定共享命名信号量的方式是否正确. 生产者: #include #include ..
发布时间:2020-05-29 18:48:21 其他开发

是否可以避免仅使用POSIX信号量的唤醒等待竞赛?它是良性的吗?

我想使用POSIX信号来管理表示队列的文件的原子获取和放置.我希望在文件系统中具有命名空间的灵活性,以便完全不相关的进程可以共享队列.我认为该计划排除了pthread.命名的posix信号量非常适合将任何进程都可以看到的文件放入文件系统中,但是我找不到标准的CondWait原语: ... decide we have to wait .... CondWait(sem, cond); 当 ..
发布时间:2020-05-29 18:43:59 其他开发

命名和未命名的posix信号量

计划使用posix信号量来同步2个进程.不确定使用哪个-命名或未命名. 每种技术都有哪些优缺点?我该如何决定使用哪个?在哪种情况下,一个比另一个更可取? 谢谢. 解决方案 如果两个进程不相关,则应使用命名信号量.如果两个进程是相关的(即分叉的),或者您只是在线程之间使用信号灯,则应使用未命名. 未命名的优点是您不必跟踪名称和任何权限,也不必取消链接.如果未命名的信号量在同 ..
发布时间:2020-05-29 18:42:34 其他开发

了解posix进程间信号量

根据我的理解,信号量应该可以在相关进程中使用,而不必放置在共享内存中.如果是这样,为什么以下代码会死锁? #include #include #include using namespace std; static int MAX = 100; int main(int argc, char* argv[]) ..
发布时间:2020-05-29 18:38:57 C/C++开发

名称和未命名信号量

我试图了解已命名和未命名信号量之间的异同,所以我的Google搜索使我 未命名的信号灯可能通过多个过程可用 命名信号量可以通过多个过程共享 这两个词在这两种信号量之间产生了重要区别还是不相关? 到目前为止,这是我所拥有的: Similarities -Several processes can do something with the semaphore Diffe ..
发布时间:2020-05-29 18:36:51 其他开发

在使用pthread和信号量实现生产者-消费者问题时需要帮助

我正在尝试使用pthread和semaphore在C ++中实现生产者和消费者问题.我有一个生产者和两个消费者.我的生产者从文件中读取一个字符串,并将其逐个字符存储在队列中.消费者从字符串中读取内容,并也一个字符地存储在一个char字符中.问题是我的使用者中只有一个正在从队列中读取,另一个则不在,并且其数组保持为空.我该如何解决此问题.这是我的程序: #include # ..
发布时间:2020-05-21 19:06:48 C/C++开发

如何使用信号同步进程

假设我有3个进程,包括一个父进程,我必须按P3,P1,P2的顺序执行我的程序.伙计们,请帮我如何从过程P3开始计算. 我需要的出场次数为{0,1,2,3,4,5,.. max} 作为参考,我的代码快照为:- #define SEM_NAME "//test.mutex" //#define SEM_NAME2 "//test2.mutex" int main(int argc ..
发布时间:2020-05-21 19:06:26 其他开发

线程如何在禁用中断的情况下进入睡眠状态?

我试图了解以下代码的工作方式.这直接来自我的专业讲座幻灯片.这个P()和V()函数是我们在类(OS161)中使用的OS中信号量实现的一部分.我认为您可能需要了解OS161才能回答我的问题,因为它已被广泛使用,希望有人可以回答这个问题. 我对本代码的理解和讲义: X:P()函数的流程 1.当线程调用P()时,我们禁用中断 2.检查sem-> count 是否有可用资源 3.a)如果co ..

计数和二进制信号量之间的区别

计数和二进制信号量有什么区别. 我在某处看到的是,两者都可以控制N个请求资源的进程. 两者都处于“空闲"状态. 二进制信号量和计数信号量可以保护多少资源? 两者都只允许一个进程一次使用资源... 还有其他区别吗?上述属性正确吗? 解决方案 实际上,无论尝试访问的实体是进程还是线程,两种类型都用于同步对共享资源的访问. 区别如下: 二进制信号量是二进制的, ..
发布时间:2020-05-21 18:55:41 其他开发

使用信号量实现N个过程障碍

我目前正在使用以前的迭代训练OS考试,并且碰到了这一点: 实施"N个过程障碍",即 是,请确保每个流程都已完成 他们中的一组在等待 指出其各自的执行情况, 其他过程达到他们的 给定点. 您具有以下内容 可用的操作: init(sem,value), wait(sem) and signal(sem) N是任意数字.我可以做到这一点,以使其适用于给定数量的进程,而不适用于任何 ..

几分钟后Uart dma接收中断将停止接收数据

我有一个使用过stm32f746g发现板的项目.它顺序地从Uart接收具有固定大小的数据,并通知应用程序每个接收到的数据已完成,并使用dma回调(HAL_UART_RxCpltCallback函数).它在一开始就可以正常工作,但是在运行了几分钟后,dma回调停止被调用,结果,指定的参数值没有得到更新.因为该参数也在另一个线程中使用(实际上是rtos定义的计时器),所以我认为此问题是由于缺乏线程安全 ..
发布时间:2020-05-14 02:18:49 其他开发

一个线程对另一个线程(消费者/生产者)表现出兴趣

我想必须让线程(消费者)对另一个线程(生产者)制造东西表示兴趣.但并非一直如此. 基本上,我想一次性消费.理想情况下,生产者会很高兴地从事其业务,直到一个(或多个)消费者发出他们想要的东西的信号,在这种情况下,生产者会将一些数据推送到变量中并表示已经这样做了.使用者将等待直到变量变满为止. 还必须如此,以便一次性使用的消费者可以确定它已经等待了太长时间而放弃了等待(la pthread ..
发布时间:2020-05-14 02:18:28 其他开发

生产者/消费者中的信号量与互斥量

在生产者-消费者问题中,为什么我们经常建议使用信号量而不是使用锁/互斥锁? 我看不到使用信号量的正当理由,因为我们只有 2个线程进行协调.在这种情况下,锁似乎更容易编写代码并进行推理,因为一个线程将锁定缓冲区然后释放它,以便另一个线程可以执行相同的操作.只有2个线程,所以我看不到信令的使用. 有人可以说为什么建议通常将信号量用于生产者-消费者吗? 解决方案 据我所知. 请 ..
发布时间:2020-05-14 02:18:13 Java开发