Allow multi-threaded HTTP Tile loading

Description

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].

Activity

Show:
Jerry Faust
December 2, 2019, 3:28 AM

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.

Assignee

Jerry Faust

Reporter

Jerry Faust

Labels

None

Epic Link

None

Affects versions

None

Fix versions

Priority

Medium
Configure