一个java程序模拟race condition的程序,用飞机进港来模拟,自己写了一部分
我把你的程序调通了。也做到了共享一个参数
不过我不懂什么 狄更斯算法 ,所以呢,我不知道是不是你要的结果
//这里用一个“单例模式”单独处理 你的公共参数
class PubParams {
private int c1 = 0, c2 = 0, turn = 1;
private static final PubParams pp =new PubParams();
private PubParams() {
}
public static PubParams getPubParams() {
return pp;
}
public int getC1() {
return c1;
}
public void setC1(int c1) {
this.c1 = c1;
}
public int getC2() {
return c2;
}
public void setC2(int c2) {
this.c2 = c2;
}
public int getTurn() {
return turn;
}
public void setTurn(int turn) {
this.turn = turn;
}
// 进港程序,用method来描述,传输一个飞船名字作为参数
public static void landingConOffice(String name) {
// landing controll // office的动作,critical // section 那部分
System.out.println(name + " is granted permission to land.");
System.out.println(name + " call the ball!");
System.out.println(name + ", permission is granted for final approach.");
}
}
public class ShuttleBoarding {
// 全局变量,不知道怎么能够被其他两个class共享调用
public static void main(String[] args) {
Atlantic a = new Atlantic(PubParams.getPubParams());
Ranger b = new Ranger(PubParams.getPubParams());
a.start();
b.start();
}
}
/* 亚特兰大号 */
class Atlantic extends Thread // 亚特兰大号
{
PubParams pp;
public Atlantic(PubParams pp) { // 是否应该把global参数从这里传进来???
this.pp = pp;
}
public void run() { // 不清楚run()函数的作用
int loop = 1;
while (loop == 1) { // while(ture)
pp.setC1(1); // 设定自己要进港
// 判断对方是否要进港
while (pp.getC2() == 1) {
if (pp.getTurn() == 2) { // 如果不是自己的tun
pp.setC1(0); // 撤销自己进港
while (pp.getTurn() == 2)
; // spin lock 直到是自己的turn
pp.setC1(1); // 轮到turn=1后,设定自己要进港
}
}
pp.landingConOffice("Atlantic");// 这里是进港的程序 critical section部分
pp.setC1(0);
pp.setTurn(2); // 释放自己的资源
}
}
}
/* Ranger号 */
class Ranger extends Thread // 亚特兰大号
{
PubParams pp;
public Ranger(PubParams pp) { // 是否应该把global参数从这里传进来???
this.pp = pp;
}
public void run() {
int loop = 1;
while (loop == 1) { // while(ture)
pp.setC2(1); // 设定自己要进港
// 判断对方是否要进港
while (pp.getC1() == 1) {
if (pp.getTurn() == 1) { // 如果不是自己的tun
pp.setC2(0); // 撤销自己进港
while (pp.getTurn() == 1)
; // spin lock 直到是自己的turn
pp.setC2(1); // 轮到turn=1后,设定自己要进港
}
}
pp.landingConOffice("Ranger");// 这里是进港的程序
pp.setC2(0);
pp.setTurn(1); // 释放自己的资源
}
}
}
什么是race condition
Race Condition(也叫做资源竞争),是多线程编程中比较头疼的问题。特别是Java多线程模型当中,经常会因为多个线程同时访问相同的共享数据,而造成数据的不一致性。为了解决这个问题,通常来说需要加上同步标志“synchronized”,来保证数据的串行访问。但是“synchronized”是个性能杀手,过多的使用会导致性能下降,特别是扩展性下降,使得你的系统不能使用多个CPU资源。
什么是 race condition
race condition
英 [reis kənˈdiʃən] 美 [res kənˈdɪʃən]
[释义] 紊乱情况,竞态条件;
全部释义>>
[例句]Another possibility is that this phenomenon is caused by some kind of subtle race condition with the hypervisor software.
另外一种可能是这种现象是由于系统管理软件中的某种竞争所导致的。
对……有害的英语翻译
对……有害的英语:be bad for。be bad for英 [bi: bæd fɔ:] 美 [bi bæd fɔr] 重点词汇:1、bad英 [bæd] 美 [bæd] adj.坏的,不好的;严重的;不舒服的;低劣的,有害的。n.坏人,坏事。adv.不好地,非常地。2、for英 [fə(r)] 美 [fɔr,fə] prep.为,为了;倾向于;关于;当作。conj.因为,由于。例句:1、If I don't exist, it can't be bad for me. 如果我不存在,这不可能对我有害。2、But that would be bad for them and bad for your company. 但这对他们和对你的公司都不是好事。扩展资料:bad在句中可用作定语或表语。bad和feel, seem, look等词连用,意为“不舒服”。bad的比较级为worse,最高级为worst。bad一般不用于否定句中,习语not bad的意思是“不错”。bad的词汇搭配:1、bad cold重感冒。2、bad faith不诚实,背叛;奸诈。3、bad form不正当的社交行为,不能接受的行为。4、bad girl无教养的女子,不正经的女子。5、bad job坏事,徒劳的事;做得拙劣的活儿。
/bi:d/是什么单词的音标
bead的中文意思、音标、例句及语法
单词音标
英语音标:[biːd]
美语音标:[bid]
转载需注明“转自音标网yinbiao5.com”,违者必究
中文翻译
n.珠子;滴
vt.用珍珠布置或覆盖;象珍珠一样串成线
vi.形成珍珠
单词例句
用作名词 (n.)
Brightly colored bead chaser featured in the middle. 在中间有明亮的彩色珠子。
His back was beaded with sweat. 他的背上布满了汗珠。
会员补充
wholesky1
2楼 2015-01-14 10:40 有用[0] 无用[0] 举报
beaded outside diameter
阿里克西亚
1楼 2015-01-14 10:40 有用[0] 无用[0] 举报
轮胎部件中的‘上三角胶’
怎么自己做魔兽RPG地图?
前言: 现在有很多玩家都对WE有着浓厚的兴趣,而且都想能创作出自己的魔兽地图,虽然在论坛里也有很多相关的讨论贴,但是大部份都是针对一些对WE有一定了解的玩家所做的,而对于刚刚起步并才开始弄WE的玩家则没有一些基本的教程或讨论贴,所以,在此,本人决定以自己学习WE及做图的经验与心得写一个面向初识WE玩家的地图制作指导教程,希望对各位新手们有所帮助!当然要完成一张RPG地图或是对战地图还要有作者的很大的决心及恒心,对魔兽这个游戏,包括战役地图,对战地图及RPG地图要有一定的了解,至少要会玩魔兽。如果你有以上两点条件的话,呵呵,那么请继续往下看吧,你一定会有所收获的! 第一章: 认识WE 第一节 相关的名词及概念 相信有些新手们还不知道什么是WE吧!呵呵,WE就是World Editor的简写啦,译做中文应该是叫做世界编辑器,这个东西就是大多数地图制作者们的工具了,你只需要在魔兽的安装目录下就能找到了。如果是第一次运行的话,会出现个用户协议之类的,不用管了,有对话框就只管按确定吧! 关于什么是T?-我们在一些讨论贴中经常会看到一些诸如“用T吧,T不对吧”的语句,其实这个T也是一个简写,它是触发事件编辑器(Trigger),它的功能是很强大的,知道为什么对战地图时一来每个玩家都有一定的资源和单位吗?就是它弄的了,还有像一些RPG地图里的剧情啊,对话啊,包括开始时选择英雄也是用它来实现的,可以说,只要是一张RPG地图的话,T就是整个地图的精髓与灵魂所在。没有T,那么你的地图就只是一张好看的摆设罢了(由于这是新手教学贴,所以在以下的课程里面会专门提出来进行讲解,现在暂不讨论) 关于JASS,我想还是有很多人听说过JASS吧,这个的确是个好东东,功能比T还要强大,但是需要一定的程序设计能力的人才会用了吧,这对于新手来说更是不沾边的了,所以在本教程中不涉及讨论!如果各位有兴趣的话可以自己去找点相关的教程! 另外的几个相关东东:物品管理器,声音管理器及输入管理器将在具体的制图过程教学中提到! 第二节 熟悉WE 不知怎么说呢,大多数地图作者都必须经历的一个过程吧:修改地图。呵呵,没错,修改地图是了解并熟悉WE的一个捷径。虽然现在都不提倡修改地图,不过做为学习WE的一个手段,我还是建议大家先从改图学起,而最简单的就是先修改官方的对战地图了!下面将以Lost Temple这张人气较高的对战图来入手,让我们一起揭开WE的神秘面纱! 运行WE,进入后先将菜单栏里的窗口选项打开,将里面的刷子表那里的勾去掉,这样WE的速度会有所提高。选择菜单栏里的文件-打开地图,在目录里找到要打开的地图,如:Lost Temple.打开之后,就是这个地图的地形了! 认识工具面板:在地图中有一个工具面板,如果没显示的话可以在菜单栏的层面里面打开。它包括:地形面板,地形装饰物品面板,单位面板,地区面板和镜头面板。以下将会分别说明! 1.地形面板,最好理解的一个了,你现在所能看到的整个地图的地形。包括平地,坡地,水,草地和悬崖等都是用它弄出来的,自己试着改改看吧! 2.地形装饰物面板,呵呵,和上面那个差不多,不过内容就多了,看到地图上的树啊,花啊鸟啊什么的了吗?就是用它弄了,同理,自己试着改去吧! 3.单位面板:也是事先放东西的工具了,地图上的中立怪,商店,生命泉和金矿就是用这个放的了,还有一个就是玩家开始地点也是由这个来完成。 4.地区面板:基本上是用在T里面的,现在唯一能做的就是弄传送门。暂时先不管! 5.镜头面板:用在交待剧情时用,同样要用T来弄,也先不管了! 说到这里,基本上WE里要用到的几个工具大家都知道一点点了,具体怎么用就在下面以修改地图的实例来说明了。(示范图为Lost Temple) 一.修改金矿的数量,是不是觉得对战时金矿不够采,才12500的金子,改多一点吧。先将工具面板打开至单位面板,此时在地图上选中一个金矿,双击,会出现一个对话框,里面很明显有个“金钱含量”的框框,默认的是12500,这个就是该金矿的含金量了,想改多少自己弄吧。 二.如何让中立怪死后掉落物品。是不是看到金矿旁边的怪有两个有白色圈圈在动啊?那个就说明杀了此单位后它会掉东东,怎么弄呢?同上面一样,选中它,双击,出现对话框了,此时你可以修改它的一些属性,如生命值比例,所属玩家等。看到掉落物品的选项没?就是那个,点了它后,打开下拉列表,里面有两个选项,两个都可以设置其死后掉落的物品,自己试试看怎么设置吧,这里就不再说明了! 三.在原有地图上加一些单位:如商店,酒馆或是金矿放几个怪!打开单位面板,在中立无敌意里面可以找到如金矿,泉水,商店酒馆等中立建筑,也有一些单位,如小鸡野狗等。想
用地图编辑器可以做RPG地图吗?怎么做?
去找教程学习,光说也比较难明白。 由四个主编辑器还有个功能强大的物件管理器(Object Manager)组成。四大编辑器分为地形编辑器(Terrain Editor)、单位编辑器(Unit Editor)、触发编辑器(Trigger Editor)、音效编辑器(Sound Editor),四者关系如图,其中要属地形编辑器和触发编辑器功能最为强大。本文将以四大编辑器为主线介绍WE,并以官方RPG地图WarChasers的制作方法为例,由浅入深地讲解构建一幅魔兽地图的思路。(注:本文使用的软件为英文版WarCraft World Editor 1.05版) 搭建舞台场景——地形编辑器 WE基本元素之一。光用地形编辑器就能制作出简单的对战地图。由于它被设计得“傻瓜化”,就算是新手操作起来也非常容易,仿佛Windows画板一样。 通过魔兽争霸快捷程序组运行World Editor之后看到如图1界面,这便是最基础的地形编辑器。 ①上方为菜单栏,与其它的Windows软件类似,在这里可进行WE的所有指令操作。 ②WE的主编辑视窗,通过它看到所编辑地图的全貌。 ③辅助视窗,对你编辑地图有一定帮助,不过会影响到速度。 ④工具面板,相当于一个巨大的素材库,能很方便地添加物件到地图。 ⑤状态栏,记录了包括鼠标位置、鼠标所选物件的名称等附加信息。 看过地形编辑器的构造之后,我们来学习如何绘制地图的基本场景。第1步,新建一张地图(File→New)(如图2),这时你会看到网格——暴雪为了方便玩家合理安排地图构造而设计的类似一些图像编辑软件的引导线(可通过View→Grid→None来消除它)。首先,我们使用工具面板的地形面板(Terrain Palette)(图3)来创建一些山和水之类的自然地貌。A部分用来调整地形纹理以及绘制分界线。B部分调整悬崖、海水以及地表类型,不过在这里请注意两点:第1,只能在高度差为1,而且宽度至少为三个中型网格,长度在五个中型网格以上的地形间创建坡道(Ramp);第2,不要在小范围内同时使用两种悬崖类型(Cliff Type),这样可能会造成地表贴图错误。在完成了地形纹理设计和悬崖调整以后,使用C部分的地形高度选项来使地形变得更自然点儿。在调整高度时,建议使用D部分的笔刷选项,将笔刷调整到最大,这样可省下不少力气(图4)。 对自己创造的地形满意吗?光秃秃的可不好看,想加些树木、小鸟还有瀑布之类的修饰就需要用到摆设面板(Doodad Palette)了,点选工具面板上方的选择框或点击Layer→Doodad来切换到摆设面板(图5)。当你创建类似箭靶的物品时,会发现大小与方向都是随机的,这时你既可将四部分的随机大小和随机方向取消,然后重新添加摆设,也可通过双击调整摆设,然后输入数值来改变大小、方向和种类。如果你只想大致地调整一下方向,则使用Ctrl+鼠标左键点击/拖拽(图6)。 嘿嘿,接下来就是为你的地图添加有生力量了,用相同的方法切换到单位面板(Unit Palette),相信到这里魔兽玩家应该不会陌生,你可随意添加任何兵种和建筑到地图上(图7),不过要注意,当准备创建中立生物或构建敌人基地时,别忘了更改上方的玩家哦(默认是Player1 Red)。同样能通过双击已建立的单位来更改所有者,也可使用鼠标框选或用Shift+鼠标左键来选择多个单位进行批量修改。除了所有者以外,单位的属性面板和摆设的属性面板还有很多不同的地方,其中的技能栏可激活所编辑单位的技能,而掉落物品栏多半用于设置中立生物死亡时掉落的物品。当然,游戏地图都需要有起始点,在单位面板中Buildings的最后一栏找到起始点(Start Location),然后将它创建在地图上的任意地方。别忘了作为对战地图,至少要有两个起始点。接下来需要做的就是为你的对战地图加上一些小修饰了:点击菜单Scenario→Map Description,在Description栏里你可修改地图名称、游戏人数和地图说明,作者栏里签上你的大名(图8)。最后测试一下地图(Ctrl+F9)就可存盘了。一张简单的对战地图不就出来了? 排练演员——单位编辑器 大家肯定不会满足于只创造简单的对战地图,就像有了电脑不光只学打字一样。想学会如何驾御WE添加一些有个性的元素,这时我们就要用到下面的单位编辑器了。 单位编辑器功能很强大,因为官方经常用来调整平衡性,所以使用它就好像编辑QQ个人资料一样简单。本节将介绍如何使用它,并且主要对各个可修改选项加以解释,让大家可尽情发挥想象力创造新的单位——善恶美丑高矮胖瘦,完全由你选择。 用F5打开它以后,我们可看到A部分是与地形编辑器同样的菜单栏和快捷按钮栏,单位编辑器的菜单命令非常少且比较简单。B部分是单位树,在这里你可全览所有单位。C部分则是显示在B部分选择单位的详细数据,你要做的就是在此对各项数据进行修改。通过点击菜单File→New Custom Unit新建自定义单位,弹出新建单位窗口,其中名字可在创建后再编辑,最主要的是选择参照单位,也就是要你选择想在哪个单位的基础上进行编辑。选择了之后会在单位树的最下方看到新建的单位被放在了Custom Units目录下,点选刚才新建的自定义单位,通过右方的编辑窗口对数据进行修改(图9)。 因为编辑器里面可编辑元素多得恐怖,而且有一些玩家在游戏中都没有见过,所以我只对常见的项目进行解释(见表1)。 注释 伤害值的计算:例如9级石头人的基本伤害值为60,伤害值随机数为1,随机伤害值为8,我们就可算出石头人对地攻击的最大伤害为60+1×8=68,最小伤害为60-1×8=52,即伤害值范围为52~68。金钱奖励的计算方法同理。 以上是普通单位的编辑介绍,在编辑英雄单位时,有以下特有的修改选项(见表2)。 在设置完了这些让人眼花缭乱的单位数据及属性后,不要忘了通过点击菜单File→Export Unit Settings来将所改动的单位数据存储到文件中,然后再在你自己设计的地图上使用Import Unit Settings来调入修改了的数据。 展开剧情——触发编辑器 触发编辑器是WE的灵魂,魔兽RPG无限的内涵就是因为它的存在。在此节,我们通过分析经典RPG地图WarChasers(大家可在魔兽争霸游戏目录的Maps\Scenario下找到它)中的几个设计要点,来对触发编辑 Kaggz RPG-Shadow of Evil(图21