- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在大学中,我从“Gregory R. Andrews-多线程....编程基础”中得到了规范的并行编程问题:(尽管我有一本书的较新和俄语版本,但我发现了一个旧的英语变体,并尝试正确传达一切)
我还被赋予solve this problem but with m consequently moving cars possible using semaphores任务。为了解决该任务,导师告诉我要模仿读者-作家任务中的读者行为
单车桥。 来自北方和南方的汽车到达一个
车道桥。朝相同方向行驶的汽车可以在同一时间过桥
时间,但是朝相反方向行驶的汽车却不能。
制定此问题的解决方案。将汽车建模为流程,并使用
监视同步。首先指定监视器不变式,然后开发
显示器主体,确保公平。 (有车上车)
我在Google上搜索并找到了类似任务的解决方案(http://www.cs.cornell.edu/courses/cs4410/2008fa/homework/hw3_soln.pdf),但讲师说,大多数解决方案都没有用,而且是不正确的,我最终得到以下解决方案:
monitor onelanebridge{
int nb=0,sb=0; //Invar:(nb==0 and sb<=1)or(sb=0 and nb<=1)
cond nbfreetogo,sbfreetogo; //conditional variables
procedure enter_n(){
if(sb!=0andnb==0) wait(nbfreetogo);
nb++;
}
procedure enter_s(){
if(nb!=0andsb==0) wait(sbfreetogo);
sb++;
}
procedure leave_n(){
nb--;
if(nb==0) signal(sbfreetogo);
}
procedure leave_s(){
sb--;
if(sb==0) signal(nbfreetogo);
}
}
monitor RW_Controller {
int nr = 0, nw =0; //Invar: (nr == 0 or nw == 0) and nw <= 1
cond oktoread; # recieves signal, when nw == 0
cond oktowrite; # recieves signal, when nr == 0 и nw == 0
procedure request_read() {
while (nw > 0) wait(oktoread);
nr = nr + 1;
}
procedure release_read() {
nr = nr - 1;
if (nr == 0) signal(oktowrite);
# run one writer-process
}
procedure request_write() {
while (nr > 0 || nw > 0) wait(oktowrite);
nw = nw + 1 ;
}
procedure release_ write() {
nw = nw - 1;
signal(oktowrite); # run one writer-process and
signal_all(oktoread); # all reader-processes
}
}
wait(cv)//wait at end of queue
wait(cv,rank)//wait in order of increasing value of rank
signal(cv)//awaken process at end of queue then continue
signal_all(cv)//awaken all processes at end of queue then continue
empty(cv) //true if wait queue is empty; false otherwise
minrank(cv) //value of rank of process at front of wait queue
最佳答案
您的显示器onelanebridge距离目标不远,但是没有公平的概念。如果有稳定的北行流量,则不会触发向南行的切换。您需要将等待和“活跃”计数分开。
一个简单的公平方法是交替进行,因此您可以将“ Activity ”计数器限制为1;并检查是否为零时进行切换。
为避免激怒道路,您可以根据单车道路段的穿越时间选择一个限制。
现在,您将在具有正确方向的enter_ [ns]中等待车辆,但由于限制而必须等待,因此您的if(cond)等待需要变为while(更复杂的cond)等待。
并发编程不是自然的,但是随着实践的发展,它会变得根深蒂固。尝试并思考当前的问题,而不是如何运用这些机制。
关于multithreading - 使用监视器的一车道桥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47613297/
以下是否意味着只有一个线程可以在对象的任何方法中?或者多个线程可以使用不同的方法而不是同一个方法吗?为什么? public class SynchronizedCounter { privat
我有一个 java 监视器,但我需要一些解释: class Test { private int data; private boolean full = false; public sy
#include #include #include #include #define N_ASS 4 pthread_t tid[N_ASS]; //mutex pthread_mutex_
我想知道是否有一种工具可以跟踪我的 C# 程序正在使用/访问的文件列表(文本/任何外部文件)? =D 有什么工具吗? 附注它是为了测试程序安全性.. ;) 最佳答案 ProcessMonitor监控任
我想知道 Monitor 类。据我所知,所有等待线程都不是 FIFO。第一个获得锁的并不总是等待队列中的第一个。这样对吗?有什么方法可以确保 FIFO 条件? 问候 最佳答案 如果您指的是内置方式,则
我有一个 ASP.net (c#) 应用程序,其中包含修改全局可访问资源(如 web.config 文件)的部分代码。当然,在修改资源时,为了防止竞争条件,一次只允许一个用户,因此我需要使用监视器锁定
如何方便调试持久化上下文的状态、观察查询结果、监控所有实体? 有一些 JPA 监视器可以用于此吗? 最佳答案 如果您使用 EclipseLink,则有一个性能监视器选项, 看, http://wiki
启动和停止按钮在监视器 tomcat 中被禁用,大约 10-15 分钟后,它允许我重新启动服务器 当 tomcat 停止响应并且我尝试重新启动服务器时,我遇到了这个问题,我能够停止服务器,但之后它不允
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我必须开发一个系统来监控报告的生成/传输。 系统数据将存储在数据库表中(Sybase) 报告将按不同的时间表生成(“周一至周五晚上 10 点”、“周六早上 5 点”、“每月的第一天”等) 系统只会监控
我需要同步多个线程(使用 POSIX 线程)。此外,我正在使用条件变量(监视器)来实现这一点。 问题是我必须实现“先到先得”的策略。假设多个线程正在等待另一个线程发出条件变化的信号,pthread_c
在 eclipse 中,我有一个运行的 weblogic 服务器,并部署了一个 j2ee 应用程序。该应用程序在端口 7001 上提供服务。我想将监视器连接到应用程序,我不知道要使用什么端口。我想我知
我正在使用芹菜和花卉。当我访问Flower中的“任务”标签时,我可以看到我的任务正在注册,甚至可以在“状态”列中看到“成功”标签以及所有内容。 但是,在“监视器”选项卡上,所有图形(“成功任务”,“失
有人知道有一个可以监控 beanstalkd 队列的应用程序吗?我正在寻找一些可以显示管道和工作统计信息并允许您检查详细信息的东西。 我对语言/平台并不是很挑剔,只是想在编写自己的语言/平台之前知道是
使用 Microsoft.Azure.Management.Monitor 的预览包,我尝试将指标从 Azure 获取到 .NET Core 应用程序中,但我不确定要输入什么内容作为“resource
使用 Microsoft.Azure.Management.Monitor 的预览包,我尝试将指标从 Azure 获取到 .NET Core 应用程序中,但我不确定要输入什么内容作为“resource
我想知道是否有一种方法可以通过客户端应用程序连接到位于 WebLogic 服务器上的业务 Activity 监视器。我想用 BAM 语句替换 JMS 生产者/消费者客户端中的日志语句,以便使用消息进度
我的网站有一个DIV,它的高度不固定。当用户在图像上移动鼠标时,将出现此 DIV 并显示有关图像的一些信息。页面上有几个网格格式的图像,每个图像都有自己的信息。很明显,一些图像位于屏幕底部,因此通过
提醒:Arch Linux 使用 pacman 而不是 apt-get 所以我有一个想法,我希望能够离开我的房间,并且仍然可以看到我手机的下载进度。我曾寻找过已有的程序,但一无所获,所以我决定自己编写
如果连接到多个显示器,如何使用 python 制作屏幕截图? 我试过: import sys from PyQt4.QtGui import QPixmap, QApplication app = Q
我是一名优秀的程序员,十分优秀!