Tile loading has historically been done by a thread pool. However, following the integration of the cURL library, a synchronization lock was introduced in the GetTileHttpData method, imposing single-file access by the thread pool to the http requests. [Note: this was discovered while working through GitHub Issue #182].
The lock has been removed, allowing the thread pool to access tiles asynchronously. The tile loading is improved significantly. We will need to watch for any behavioral issues, in case any of the subsequent code paths are not thread-safe; but in a cursory overview, they do appear to be (e.g. not relying on any global/shared variables). In preliminary testing, I tried increasing the thread pool size from the default of 5 up to 10, then 15, with increasing benefit to the load time.