FLUTTER ECOSYSTEM

dart-archive/pool

एक सीमित संसाधन भंडार के प्रबंधन के लिए एक क्लास।

पूल प्रोजेक्ट कवर
Stars
50
Forks
15
अंतिम पुश (UTC)
11 दिस॰ 2024
प्रोजेक्ट स्थिति
आर्काइव
Dart Archive GitHub avatar
GITHUB Organization

Dart Archive ↗

Legacy projects kept around for posterity – See github.com/dart-lang for current work

भाषाएँDart

उपयोग की गई निर्भरताएँ

निर्भरता सूची 5 आइटम
  • async^2.5.0
  • stack_trace^1.10.0
  • dart_flutter_team_lintsडेवलपमेंट^3.0.0
  • fake_asyncडेवलपमेंट^1.2.0
  • testडेवलपमेंट^1.16.6

मूल README

यह अंग्रेज़ी मूल स्नैपशॉट है। नवीनतम सामग्री GitHub पर देखें।

README खोलें / बंद करें

[!IMPORTANT]
This repo has moved to https://github.com/dart-lang/tools/tree/main/pkgs/pool

Dart CI pub package package publisher

The pool package exposes a Pool class which makes it easy to manage a limited pool of resources.

The easiest way to use a pool is by calling withResource. This runs a callback and returns its result, but only once there aren't too many other callbacks currently running.

// Create a Pool that will only allocate 10 resources at once. After 30 seconds
// of inactivity with all resources checked out, the pool will throw an error.
final pool = new Pool(10, timeout: new Duration(seconds: 30));

Future<String> readFile(String path) {
  // Since the call to [File.readAsString] is within [withResource], no more
  // than ten files will be open at once.
  return pool.withResource(() => new File(path).readAsString());
}

For more fine-grained control, the user can also explicitly request generic PoolResource objects that can later be released back into the pool. This is what withResource does under the covers: requests a resource, then releases it once the callback completes.

Pool ensures that only a limited number of resources are allocated at once. It's the caller's responsibility to ensure that the corresponding physical resource is only consumed when a PoolResource is allocated.

class PooledFile implements RandomAccessFile {
  final RandomAccessFile _file;
  final PoolResource _resource;

  static Future<PooledFile> open(String path) {
    return pool.request().then((resource) {
      return new File(path).open().then((file) {
        return new PooledFile._(file, resource);
      });
    });
  }

  PooledFile(this._file, this._resource);

  // ...

  Future<RandomAccessFile> close() {
    return _file.close.then((_) {
      _resource.release();
      return this;
    });
  }
}