semaphore 相关问题

信号量是一种同步原语,用于跟踪有限数量的资源中有多少可用。

具有2组信号灯和共享内存的进程。

我写了一个包含两个进程的程序:第一个进程包含了两个semaphores的组,并创建了子进程,读取共享内存段的所有数据并打印出来。在...

回答 1 投票 0

c++标准库头未被识别

我正在用c++做一个多线程项目,并试图使用旗语,根据我在文档中读到的内容,c++有旗语,但是当我尝试包含头文件#include

回答 1 投票 0

在C语言中,跨进程的Cond等待和信号

我试图用进程(熊-蜂蜜-蜜蜂)复制一个简单的生产者-消费者问题。到目前为止,我能够同步的蜜蜂,所以只有一个生产蜂蜜的时间。然而,当它来到...

回答 1 投票 0

如何在semaphore Java中减少许可证?

我有下面这个函数,可以减少超市中可使用的购物车数量 public boolean removeCart(){ if(carts > k.initialCarts){ try { ....

回答 1 投票 0

如何限制数据库的异步IO任务数量?

我有一个id的列表,我想从数据库中并行获取每个id的数据。我下面的ExecuteAsync方法是在非常高的吞吐量下调用的,每个请求我们有大约500个id......。

回答 3 投票 0

在共享一条总线的多个设备驱动程序中,应该使用任务和mutexsemaphore吗?

我正在为一个RTOS编写一套设备驱动程序,它们共享一条硬件总线。让每个共享该资源的设备驱动程序中都有任务运行似乎是个坏主意,因为从层次上看, ...

回答 1 投票 0


semaphore如何保护共享数据?

为什么我们可以允许多个线程同时运行?(sem_wait(&sem,0,5)),我认为这意味着可以运行5个线程。所以为什么不会出现竞赛条件呢?

回答 1 投票 -1

具有死锁和饥饿的哲学家

这是使用信号量解决geeksforgeeks餐饮哲学家问题的解决方案:#include #include #include #include #include 好吧,首先,我所知的关于餐饮哲学家问题的最佳解决方案是这个(来自现代操作系统-Tannebaum和Bos的第四版): #define TRUE 1 #define N 5 #define LEFT (i+N-1)%N #define RIGHT (i+1)%N #define THINKING 0 #define HUNGRY 1 #define EATING 2 typedef int semaphore; int state[N]; semaphore mutex = 1; semaphore s[N]; void philosopher(int i){ while(TRUE){ think(); take_forks(i); eat(); put_forks(i) } } void take_forks(int i){ down(&mutex); state[i] = HUNGRY; test(i); up(&mutex); down(&s[i]); } void put_forks(i){ down(&mutex); state[i] = THINKING; test(LEFT); test(RIGHT); up(&mutex); } void test(int i){ if(state[i] == HUNGRY && state[LEFT] != EATING && state[RIGHT] != EATING){ state[i] = EATING; up(&s[i]); } } 为了简单起见,当然省略了原型和一些功能,但是要点是,如果您要创建一个完全不安全的餐饮哲学家,解决方案就是这样的想法: #define N 5 void philosopher(int i){ while(TRUE){ think(); take_fork(i); take_fork((i+1)%N); eat(); put_fork(i); put_fork((i+1)%N); } } 说明:该程序将很容易产生竞争状态,实际上两个哲学家将使用相同的分叉,这是因为我们不使用信号量等待轮到我们吃饭,它也将产生饥饿,因为我们不使用test()检查是否有人已经使用了我们的fork,因此如果您要修改程序以解决此问题,则应删除test()以及使用过信号灯和所有测试的所有代码段。

回答 1 投票 2

由于dm_task_set_cookie失败,Docker无法启动。

我在centos机器上使用命令$ yum install docker $ docker --version Docker版本安装了docker版本1.12.6,版本88a4867 / 1.12.6当我启动docker时:$ service docker start ...

回答 2 投票 2

STM32 FreeRTOS-UART延迟中断问题

我正在尝试使用UART接收中断读取大小未知的数据。在回叫功能中,我启用了Rx中断以便读取字符,直到获得\ n为止。如果\ n得到,则更高...

回答 1 投票 0

如何让N个线程运行特定代码而又不会出现数据竞争错误?

i具有以下问题:N进程锁定器是一种同步机制,它允许N个线程(其中N是固定数)等待所有线程都达到某个点。全部...

回答 1 投票 0

如何在C#中限制异步IO任务数到数据库?

我有一个ID列表,我想从数据库中并行获取每个ID的数据。我的以下ExecuteAsync方法以很高的吞吐量被调用,对于每个请求,我们大约有500个ID ...

回答 1 投票 0


按顺序打印的Windows线程同步应用程序

我正在创建一个控制台应用程序,该应用程序使用Windows线程同步按顺序打印数字。我快完成了,但是有时候我会得到一个随机输出321321或231231而不是123123。我是...

回答 1 投票 0


Java-为什么等待多个信号灯不起作用?

我有一些作业(已同时更新和保存),我不想一起保存到数据库,因为这会导致乐观锁异常。例如:-我们有10个long -...

回答 1 投票 0

Linux c中的信号清除

[当我创建共享内存(Linux中的c程序)时,我用shmctl(shmid,IPC_RMID,0)删除了它,当我使用ipcs -m检查是否还有剩余的共享内存时,一切看起来都很好...

回答 1 投票 0

使用信号量的生产者-消费者模式实现

家伙!我知道可以使用信号量同步原语来实现生产者-消费者模式。但是要执行多少个信号灯以及需要哪些事件?

回答 1 投票 0

如何在python中创建可连接的信号量?

在某些用例中,我需要等待所有已创建的线程完成并根据其结果做出一些决定,并查看是否需要进一步处理-没有ThreadPoolExecutor...。

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.