Metered concurrency: Difference between revisions
Content deleted Content added
mNo edit summary |
revert spam |
||
Line 1: | Line 1: | ||
{{task}} |
|||
[http://knock-knock.cn/www-galiani/index.html www galiani com] [http://basimusicalicelentano.kittiss.cn/index.html basi musicali celentano] [http://beverleymitchell.romanikki.cn/index.html beverley mitchell] [http://brianeno.kittiss.cn/index.html brianeno] [http://biancabeauchamp.fast-road.cn/index.html bianca beauchamp] [http://kitmun.cn/yugihoo.html yugihoo] [http://bennybenasi.fast-road.cn/index.html benny benasi] [http://buffytylervideo.romanikki.cn/index.html buffy tyler video] [http://knock-knock.cn/www-fmcorp/index.html www fmcorp com] [http://quoits.cn/zoccoli-pescura.html zoccoli pescura] [http://bradpittcalendario.clung.cn/index.html brad pitt calendario] [http://snailtail.cn/yu-yu/index.html yu yu] [http://binetto.romanikki.cn/index.html binetto] [http://snailtail.cn/www-sassari/index.html www sassari ircq it] [http://blessedunionofsouls.romanikki.cn/index.html blessed union of souls] [http://wonted.cn/www-carpisa/index.html www carpisa it] [http://wonted.cn/www-jennifer/index.html www jennifer lopes] [http://knock-knock.cn/www-lucignolo/index.html www lucignolo it] [http://wonted.cn/www-pistoia/index.html www pistoia eventi paesani] [http://wonted.cn/www-aladino/index.html www aladino it] [http://bohr.clung.cn/index.html bohr] [http://barboncino.clung.cn/index.html barboncino] [http://kitmun.cn/your-won.html your won main men victor lazlo] [http://wonted.cn/www-unicz/index.html www unicz] [http://bustarelle.fast-road.cn/index.html bustarelle] [http://quoits.cn/a-noi-piace.html a noi piace freddo...!] [http://knock-knock.cn/www-bgonline/index.html www bgonline it] [http://wonted.cn/www-raaga/index.html www raaga com] [http://baixarcalular.kittiss.cn/index.html baixar calular] [http://bennasy.romanikki.cn/index.html bennasy] [http://kitmun.cn/yonca.html yonca] [http://wonted.cn/www-ltu/index.html www ltu de] [http://bellasenzanimadicocciante.fast-road.cn/index.html bella senz anima di cocciante] [http://batteriemoto.clung.cn/index.html batterie moto] [http://wonted.cn/www-11settembre/index.html www 11settembre it] [http://bubblinblu.midways.cn/index.html bubblin blu] [http://wonted.cn/www-ryanair/index.html www ryanair] [http://bennyybose.fast-road.cn/index.html benny y bose] [http://bandabeni.midways.cn/index.html banda beni] [http://brokenvideo.fast-road.cn/index.html broken video] [http://snailtail.cn/xerox/index.html xerox] [http://knock-knock.cn/www-mugello/index.html www mugello] [http://bonalume.kittiss.cn/index.html bonalume] [http://quoits.cn/z-reticoli.html z reticoli meganoidi] [http://kitmun.cn/yo-voy-f.html yo voy f daddy yankee] [http://kitmun.cn/zelda-awakening.html zelda awakening] [http://bugo.midways.cn/index.html bugo] [http://quoits.cn/athena-e-le.html athena e le sette sorelle] [http://wonted.cn/wwo-vienio/index.html wwo vienio pele dj 600volt] [http://snailtail.cn/xr-4750rds/index.html xr 4750rds] [http://kitmun.cn/zeta-cam-blu.html zeta cam blu] [http://bilanciosocietario2004.kittiss.cn/index.html bilancio societario 2004] [http://britneyspearsnudafree.midways.cn/index.html britney spears nuda free] [http://wonted.cn/www-regione/index.html www regione puglia it] [http://wonted.cn/www-actarus/index.html www actarus goldrake com] [http://knock-knock.cn/ww-suca-it/index.html ww suca it] [http://bebusilvetti.fast-road.cn/index.html bebu silvetti] [http://banbabardo.fast-road.cn/index.html banbabardo] [http://biagioantonaccialessandra.fast-road.cn/index.html biagio antonacci alessandra] [http://kitmun.cn/zucchero-ho.html zucchero ho scelto te] [http://knock-knock.cn/www-fernandodenoronha/index.html www fernandodenoronha br] [http://wonted.cn/www-bossfilm/index.html www bossfilm it] [http://snailtail.cn/www-siracusacalcio/index.html www siracusacalcio it] [http://knock-knock.cn/www-sfdk/index.html www sfdk cl] [http://knock-knock.cn/www-lahora/index.html www lahora de tu muerte com] [http://bacom.romanikki.cn/index.html ba com] [http://knock-knock.cn/www-la/index.html www la guerra it] [http://kitmun.cn/yo-te-voy.html yo te voy a amar] [http://quoits.cn/zxz.html zxz] [http://wonted.cn/www-usl5/index.html www usl5 it] [http://balilla.romanikki.cn/index.html balilla] [http://bandblue.romanikki.cn/index.html band blue] [http://brosher.midways.cn/index.html brosher] [http://bugiardatu.midways.cn/index.html bugiarda tu] [http://wonted.cn/www-depelicula/index.html www depelicula com] [http://wonted.cn/www-figcmarche/index.html www figcmarche it] [http://bci.romanikki.cn/index.html b c i] [http://knock-knock.cn/www-novalux/index.html www novalux it] [http://bennibennasi.kittiss.cn/index.html benni bennasi] [http://babilin.romanikki.cn/index.html babilin] [http://bresciaonline.kittiss.cn/index.html bresciaonline] [http://barcellonadinotte.fast-road.cn/index.html barcellona di notte] [http://kitmun.cn/yari.html yari] [http://brunolembo.kittiss.cn/index.html bruno lembo] [http://quoits.cn/zocc.html zocc] [http://quoits.cn/al-di-là-della.html al di là della legge] [http://knock-knock.cn/www-ubbi-com/index.html www ubbi com br] [http://bestsound.midways.cn/index.html best sound] [http://bruttacitta.fast-road.cn/index.html brutta citta] [http://knock-knock.cn/www-zuker/index.html www zuker it] [http://quoits.cn/agente-3.html agente 3 s 3 passaporto per l'inferno] [http://babybeesh.midways.cn/index.html baby beesh] [http://bitterlittlesimphony.midways.cn/index.html bitter little simphony] [http://beautyfulboyscom.kittiss.cn/index.html beautyful boys com] [http://kitmun.cn/zadok.html zadok] [http://wonted.cn/www-emmelunga/index.html www emmelunga it] [http://bintere.fast-road.cn/index.html bin tere] [http://bluechemidici.kittiss.cn/index.html blue che mi dici] [http://blackayedpeas.midways.cn/index.html black ayed peas] [http://wonted.cn/www-acqualand/index.html www acqualand it] [http://buddismoamilano.fast-road.cn/index.html buddismo a milano] [http://babykakes.romanikki.cn/index.html baby kakes] [http://quoits.cn/zvonko.html zvonko] [http://wonted.cn/www-sanjua/index.html www sanjua] [http://snailtail.cn/yeah-da-scaricare/index.html yeah da scaricare in mp3 gratis] [http://quoits.cn/amore-in-quattro.html amore in quattro dimensioni] [http://baseballgioco.kittiss.cn/index.html baseball gioco] [http://bluevideoachimidice.midways.cn/index.html blue video a chi mi dice] [http://bandiaranera.fast-road.cn/index.html bandiara nera] [http://baldini.fast-road.cn/index.html baldini] [http://kitmun.cn/ya-mustafa.html ya mustafa] [http://blackeyedpeas.fast-road.cn/index.html blackeyed peas] [http://wonted.cn/www-altavista/index.html www altavista com mx] [http://bandidigarapotaturealberi.fast-road.cn/index.html bandi di gara potature alberi] [http://quoits.cn/assalto-dallo.html assalto dallo spazio] [http://knock-knock.cn/www-omega/index.html www omega it] [http://bandidahectorytito.midways.cn/index.html bandida hector y tito] [http://wonted.cn/www-caraibi/index.html www caraibi com] [http://bennasibrothers.kittiss.cn/index.html bennasi brothers] [http://bachatavideo.fast-road.cn/index.html bachata video] [http://wonted.cn/www-napolisat/index.html www napolisat com] [http://bustedairhostesstesto.midways.cn/index.html busted air hostess testo] [http://snailtail.cn/ya-ghayeb/index.html ya ghayeb] [http://quoits.cn/any-time.html any time any play] [http://wonted.cn/www-lindvall/index.html www lindvall] [http://knock-knock.cn/wecam-ragazzi/index.html wecam ragazzi] [http://bofforocco.midways.cn/index.html boffo rocco] [http://snailtail.cn/www-rfef-es/index.html www rfef es] [http://wonted.cn/www-salue/index.html www salue de] [http://bestieditozzi.midways.cn/index.html bestie di tozzi] [http://snailtail.cn/xsat/index.html xsat] [http://bennybanasisatisfaction.fast-road.cn/index.html benny banasi satisfaction] [http://bolognaaccompagnatrici.kittiss.cn/index.html bologna accompagnatrici] [http://boysgayporn.romanikki.cn/index.html boys gay porn] [http://blacksabbat.romanikki.cn/index.html black sabbat] [http://bitchbrooks.midways.cn/index.html bitch brooks] [http://bennasibrosfeatdhanyhitmyheart.clung.cn/index.html bennasi bros feat dhany hit my heart] [http://bilalmidi.romanikki.cn/index.html bilal midi] [http://babyhmerenaseeb.romanikki.cn/index.html baby h mere naseeb] [http://bojate.romanikki.cn/index.html bojate] [http://wonted.cn/www-lagos-cd/index.html www lagos cd] [http://bibliotecanazionalediroma.fast-road.cn/index.html biblioteca nazionale di roma] [http://quoits.cn/anno-domini.html anno domini] [http://bloodpatche.fast-road.cn/index.html bloodpatche] [http://britishtvbeautygetsfiredfor3.fast-road.cn/index.html british tv beauty gets fired for 3] [http://bigbadlove.midways.cn/index.html big bad love] [http://snailtail.cn/www-ronaldo-it/index.html www ronaldo it] [http://bigbroders.fast-road.cn/index.html big broders] [http://knock-knock.cn/www-vivicorato/index.html www vivicorato it] [http://bicisportfirenze.midways.cn/index.html bici sport firenze] {{task}} |
|||
The goal of this task is to create a [http://en.wikipedia.org/wiki/Counting_semaphore counting semaphore] used to control the execution of a set of concurrent units. This task intends to demonstrate coordination of active concurrent units through the use of a passive concurrent unit. The operations for a counting semaphore are ''acquire'', ''release'', and ''count''. Each active concurrent unit should attempt to acquire the counting semaphore before executing its assigned duties. In this case the active concurrent unit should report that it has acquired the semaphore. It should sleep for 2 seconds and then release the semaphore. |
The goal of this task is to create a [http://en.wikipedia.org/wiki/Counting_semaphore counting semaphore] used to control the execution of a set of concurrent units. This task intends to demonstrate coordination of active concurrent units through the use of a passive concurrent unit. The operations for a counting semaphore are ''acquire'', ''release'', and ''count''. Each active concurrent unit should attempt to acquire the counting semaphore before executing its assigned duties. In this case the active concurrent unit should report that it has acquired the semaphore. It should sleep for 2 seconds and then release the semaphore. |
||
Line 32: | Line 32: | ||
entry Acquire when Lock_Count < Max is |
entry Acquire when Lock_Count < Max is |
||
begin |
begin |
||
Lock_Count := Lock_Count |
Lock_Count := Lock_Count + 1; |
||
end Acquire; |
end Acquire; |
||
Line 79: | Line 79: | ||
Sleep_Time := Sleep; |
Sleep_Time := Sleep; |
||
end Start; |
end Start; |
||
--Acquire the lock. The task |
--Acquire the lock. The task will suspend until the Acquire call completes |
||
2000 |
|||
l suspend until the Acquire call completes |
|||
Lock.Acquire; |
Lock.Acquire; |
||
Put_Line("Task #" |
Put_Line("Task #" & Positive'Image(My_Id) & " acquired the lock."); |
||
-- Suspend the task for Sleep_Time seconds |
|||
delay Sleep_Time; |
|||
-- Release the lock. Release is unconditional and happens without suspension |
|||
Lock.Release; |
|||
end Worker; |
|||
-- Create an array of 5 Workers |
|||
type Staff is array(Positive range 1..5) of Worker; |
|||
Crew : Staff; |
|||
begin |
|||
for I in Crew'range loop |
|||
Crew(I).Start(2.0, I); |
|||
end loop; |
|||
end Semaphores_Main; |
|||
==[[E]]== |
|||
[[Category:E]] |
|||
This semaphore slightly differs from the task description; the release operation is not on the semaphore itself but given out with each acquisition, and cannot be invoked too many times. |
|||
def makeSemaphore(maximum :(int > 0)) { |
|||
var current := 0 |
|||
def waiters := <elib:vat.makeQueue>() |
|||
def notify() { |
|||
while (current < maximum && waiters.hasMoreElements()) { |
|||
current += 1 |
|||
waiters.optDequeue().resolve(def released) |
|||
when (released) -> { |
|||
current -= 1 |
|||
notify() |
|||
} |
|||
} |
|||
} |
|||
def semaphore { |
|||
to acquire() { |
|||
waiters.enqueue(def response) |
|||
notify() |
|||
return response |
|||
} |
|||
to count() { return current } |
|||
} |
|||
return semaphore |
|||
} |
|||
def work(label, interval, semaphore, timer, println) { |
|||
when (def releaser := semaphore <- acquire()) -> { |
|||
println(`$label: I have acquired the lock.`) |
|||
releaser.resolve( |
|||
timer.whenPast(timer.now() + interval, fn { |
|||
println(`$label: I will have released the lock.`) |
|||
}) |
|||
) |
|||
} |
|||
} |
|||
def semaphore := makeSemaphore(3) |
|||
for i in 1..5 { |
|||
work(i, 2000, semaphore, timer, println) |
|||
} |
|||
==[[Java]]== |
|||
[[Category:Java]] |
|||
public class CountingSemaphore |
|||
{ |
|||
private int lockCount = 0; |
|||
private int maxCount; |
|||
CountingSemaphore(int Max) |
|||
{ |
|||
maxCount = Max; |
|||
} |
|||
public synchronized void acquire() throws InterruptedException |
|||
{ |
|||
while( lockCount >= maxCount) |
|||
{ |
|||
wait(); |
|||
} |
|||
lockCount++; |
|||
} |
|||
public synchronized void release() |
|||
{ |
|||
if (lockCount > 0) |
|||
{ |
|||
lockCount--; |
|||
notifyAll(); |
|||
} |
|||
} |
|||
public synchronized int getCount() |
|||
{ |
|||
return lockCount; |
|||
} |
|||
} |
|||
public class Worker extends Thread |
|||
{ |
|||
private CountingSemaphore lock; |
|||
private int id; |
|||
Worker(CountingSemaphore coordinator, int num) |
|||
{ |
|||
lock = coordinator; |
|||
id = num; |
|||
} |
|||
Worker() |
|||
{ |
|||
} |
|||
public void run() |
|||
{ |
|||
try |
|||
{ |
|||
lock.acquire(); |
|||
System.out.println("Worker " + id + " has acquired the lock."); |
|||
sleep(2000); |
|||
} |
|||
catch (InterruptedException e) |
|||
{ |
|||
} |
|||
finally |
|||
{ |
|||
lock.release(); |
|||
} |
|||
} |
|||
public static void main(String[] args) |
|||
{ |
|||
CountingSemaphore lock = new CountingSemaphore(3); |
|||
Worker crew[]; |
|||
crew = new Worker[5]; |
|||
for (int i = 0; i < 5; i++) |
|||
{ |
|||
crew[i] = new Worker(lock, i); |
|||
crew[i].start(); |
|||
} |
|||
} |
|||
} |
|||
==[[Perl]]== |
|||
[[Category:Perl]] |
|||
See [http://search.cpan.org/dist/Coro/Coro/Semaphore.pm Coro::Semaphore]. |