import 'dart:async';
import 'package:semaphore/semaphore.dart';
Future<void> main() async {
var maxCount = 3;
var sm = new LocalSemaphore(maxCount);
var tasks = <Future>[];
for (var i = 0; i < 9; i++) {
tasks.add(
new Future(
() async {
try {
await sm.acquire();
print("Start $i, running $running");
await _doWork(1000);
print("End $i, running $running");
} finally {
sm.release();
}
}
)
);
}
await Future.wait(tasks);
print("Max permits: $maxCount, max simultaneous runned: $simultaneous");
}
Future _doWork(int ms) {
// Simulate work
return new Future.delayed(new Duration(milliseconds: ms));
}
import 'dart:async';
import 'package:semaphore/semaphore.dart';
void main()async{
var maxCount = 3;
var sm = LocalSemaphore(maxCount);
var tasks = <Future>[];
for (int i=0; i<9; i++){
tasks.add(manage(sm));
}
await Future.wait(tasks);
}
Future manage(LocalSemaphore sm)async{
try {
await sm.acquire();
await doWork(1);
} finally{
sm.release();
}
}
Future doWork(int ms){
print('a');
return Future.delayed(Duration(seconds: ms));
}