亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于JAC技術(shù)實現(xiàn)讀者/寫者問題的研究

        2008-12-31 00:00:00李金忠李滿華夏潔武
        商場現(xiàn)代化 2008年33期

        [摘要] 簡要描述JAC技術(shù),闡述操作系統(tǒng)中讀者/寫者這個經(jīng)典同步問題,并給出基于JAC實現(xiàn)此問題避免餓死現(xiàn)象的相應代碼,以此論述JAC的使用及其線程同步能力。

        [關(guān)鍵詞] JAC 讀者/寫者問題 同步

        一、JAC簡介

        由Max Haustein等人開發(fā)的JAC是基于對順序Java代碼擴展注釋來描述并發(fā)機制的,有著高水平的并發(fā)特征。它完全拋棄了Java原有的并發(fā)編程方式,隱藏了線程, 最小化了并發(fā)碼和順序碼之間的分歧,加強了代碼復用,融合了繼承,并減輕了繼承異常。用JAC 編寫的Java程序只是純粹的順序化代碼,通過在順序代碼中增加并發(fā)注解來實現(xiàn)并發(fā),JAC 預編譯器將識別它,并把它編譯成Java編譯器能識別的普通的Java并發(fā)同步代碼。JAC中能被注解的語言成分有:語句、方法、類。與Java不同,JAC中的所有方法默認為必須互斥地執(zhí)行,除非其前面有可并發(fā)執(zhí)行的注解。

        二、讀者/寫者問題描述

        所謂“讀者/寫者問題”是指保證一個寫線程必須與其他線程互斥地訪問共享數(shù)據(jù)的同步問題。讀者/寫者問題問題所滿足的條件是:讀/讀允許、讀/寫和寫/寫互斥,否則,將引起訪問沖突,破壞數(shù)據(jù)的完整性??紤]到讀者和寫者爭奪訪問共享數(shù)據(jù)時可以具有不同的優(yōu)先權(quán),該問題可拓展出三種算法:(1)讀者優(yōu)先;(2)寫者優(yōu)先;(3)公平競爭。

        三、基于JAC的實現(xiàn)

        設計兩個類: ShoredData類,將控制”讀”與”寫”分開,在讀或?qū)懼?,必須先循環(huán)判斷其Guard表達式,為真則開始讀或?qū)懀x、寫完畢進行修改相應值。ReadersWriter類,可讀可寫且用于操作測試,該類對象會對”讀/寫”、 ”寫/寫”進行互斥控制,而”讀/讀”不會發(fā)生沖突,不進行共享互斥。

        1.ShoredData類

        public class ShoredData{

        ……

        public ShoredData(int size)

        { this.buf=new char[size];

        for(int i=0;i

        /**

        * @compatible readstart()

        *@when writing<=0(!Priority||waiting<=0)

        */

        public char[] readstart(){

        reading++;

        char[] newbuf=new char[buf.length];

        for(int i=0;i

        {newbuf[i]=buf[i];

        System.out.println(“reading:”+ newbuf[i]);

        }

        /** @sleep Math.random()*1000 */

        return newbuf;}

        publicvoid readend()

        { reading--; priority=true;}

        /**

        * @if c!=1 waiting++

        * @when reading<=0 writing<=0

        */

        public void writestart(char c)

        {--waiting; writing++;

        for(int i=0;i

        { buf[i]=c;

        System.out.println(“writing:”+ buf[i]);

        /** @sleep Math.random()*1000 */

        } }

        public void writeend()

        { --writing;priority=1;} }

        2.ReadersWriter類

        public class ReadersWriter{

        ShoredData SD;

        public ReadersWriter()

        {/** @controlled */

        SD=new ShoredData(10); }

        public static void main(String[] args)

        { /** @controlled */

        ReadersWriter RW=new ReadersWriter();

        /** @sleep 10000 */

        System.out.println(“演示完畢!”);

        /** @stop RW */

        RW=1;}

        //n個reader線程,它們之間可并發(fā)執(zhí)行

        /**

        * @auto delay Math.random()*1000 thread n

        * @compatible

        */

        public void read()

        { System.out.println(“Reading:”);

        SD.readstart();SD.readend();}

        //m個writer線程,可并發(fā)執(zhí)行,但由于受條件控制,寫/寫之間只能互斥

        /**

        * @auto delay Math.random()*1000 thread m

        * @compatible

        */

        public void write()

        { System.out.println(“Writing:”);

        SD.writestart(c);SD.writeend();} }

        四、結(jié)語

        JAC技術(shù)是一種java拓展的并行表達層次更高的并發(fā)模型,它只是在順序代碼中增加一些并發(fā)注解,使得代碼進一步重用。讀者/寫者問題是操作系統(tǒng)中一個常見且復雜的同步問題,用JAC 解決該問題簡潔、清晰、程序可讀性強。與其他同步機制相比,JAC在算法設計上的自然形式也更加符合設計人員的思維習慣,并且程序健壯性也大大增強了。

        參考文獻:

        李金忠夏潔武:基于JAVA多線程機制實現(xiàn)讀者/寫者問題的拓展研究[J]. 井岡山學院學報, 2008, 29(2)

        亚洲一区二区视频免费看| 国产激情з∠视频一区二区| 狠狠躁狠狠躁东京热无码专区| 少妇被搞高潮在线免费观看| 白白色发布的在线视频| 国产麻豆精品一区二区三区v视界| 亚洲中文久久精品无码ww16| 天天摸天天做天天爽天天舒服| 久久99精品综合国产女同| 99久久婷婷国产综合亚洲| 亚洲欧美日韩国产综合一区二区| 国产成人精品cao在线| 久久精品国产9久久综合| 欧美激情在线播放| 国产精品 高清 尿 小便 嘘嘘| 中文字幕亚洲区第一页| 国产一区白浆在线观看| 亚洲国产日韩精品一区二区三区| 久青草国产视频| 91在线视频视频在线| 日本激情网站中文字幕| 日本第一影院一区二区| 亚洲乱色伦图片区小说| 精精国产xxxx视频在线| 国产三级自拍视频在线| 中国亚洲一区二区视频| 亚洲一区二区三区无码国产| 妺妺窝人体色www聚色窝韩国| 美利坚合众国亚洲视频 | 三级黄片一区二区三区| 四虎影在永久在线观看| 国产高潮国产高潮久久久| 国产三级视频在线观看视主播| 日本亚洲系列中文字幕| 久久99精品久久久久婷婷| 亚洲综合激情五月丁香六月| 亚洲精品第一国产麻豆| 性色av一区二区三区四区久久| 国产精品女同久久久久电影院| 少妇的肉体k8经典| 久久激情人妻中文字幕|