Metered concurrency: Difference between revisions

Content deleted Content added
m elided an omit.
Wherrera (talk | contribs)
Line 928:
}
}</lang>
 
=={{header|Julia}}==
<lang julia>
function acquire(num, sem)
sleep(rand())
println("Task $num waiting for semaphore")
lock(sem)
println("Task $num has acquired semaphore")
sleep(rand())
unlock(sem)
end
 
 
function runsem(numtasks)
println("Sleeping and running $numtasks tasks.")
sem = Base.Threads.RecursiveSpinLock()
@sync(
for i in 1:numtasks
@async acquire(i, sem)
end)
println("Done.")
end
 
runsem(4)
</lang>{{output}}<pre>
Sleeping and running 4 tasks.
Task 4 waiting for semaphore
Task 4 has acquired semaphore
Task 1 waiting for semaphore
Task 1 has acquired semaphore
Task 2 waiting for semaphore
Task 2 has acquired semaphore
Task 3 waiting for semaphore
Task 3 has acquired semaphore
Done.
</pre>
 
 
=={{header|Kotlin}}==