Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
Firstly, we should be pulling the number of threads from options.io_threads (which should default to std::thread::hardware_concurrency()). The library should pass all tests always with io_threads set to 1 or to <a very high number>
Secondly, we should have a constructor where the consumer doesn't need to manage the IOService explicitly, and the FileSystemImpl should create its own internally.
Since the FileSystem is defined as being for a particular user/identity, there is a valid use case for the consumer to be constructing many FileSystem instances to represent many authenticated users in the same process, but want to share resources (notably have a single io_service shared amongst them all). In this case, the consumer would want to own the IOService and pass the same instance to multiple FileSystem instances.