1 // tawesoft.co.uk/go/loader 2 // 3 // Copyright © 2021 Tawesoft Ltd <open-source@tawesoft.co.uk> 4 // Copyright © 2021 Ben Golightly <ben@tawesoft.co.uk> 5 // 6 // Permission is hereby granted, free of charge, to any person obtaining a copy 7 // of this software and associated documentation files (the "Software"), to deal 8 // in the Software without restriction, including without limitation the rights 9 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 // copies of the Software, and to permit persons to whom the Software is 11 // furnished to do so, subject to the following conditions: 12 // 13 // The above copyright notice and this permission notice shall be included in all 14 // copies or substantial portions of the Software. 15 // 16 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 // SOFTWARE. 23 24 // Package loader implements the ability to define a graph of tasks and 25 // dependencies, classes of synchronous and concurrent workers, and limiting 26 // strategies, and solve the graph incrementally or totally. 27 // 28 // For example, this could be used to implement a loading screen for a computer 29 // game with a progress bar that updates in real time, with images being decoded 30 // concurrently with files being loaded from disk, and synchronised with the main 31 // thread for safe OpenGL operations such as creating texture objects on the GPU. 32 // 33 // While this package is generally suitable for use in real world applications, 34 // we are waiting to get some experience with how it works for us in an internal 35 // application before polishing or committing to a stable API. 36 // 37 // TODO: doesn't yet free temporary results 38 // 39 // TODO: refactor the load loop to always send/receive at the same time 40 // 41 // TODO: clean up generally 42 // 43 // TODO: not decided about the API for Loader.Result (but loader.MustResult is ok) 44 // 45 // TODO: a step to simplify the DAG to remove passthrough loader.NamedTask steps 46 // 47 // Examples 48 // 49 // Configure the Loader with a Strategy to limit concurrent connections per host 50 // 51 // https://www.tawesoft.co.uk/go/doc/loader/examples/limit-connections-per-host/ 52 // 53 // 54 // Package Information 55 // 56 // License: MIT (see LICENSE.txt) 57 // 58 // Stable: no 59 // 60 // For more information, documentation, source code, examples, support, links, 61 // etc. please see https://www.tawesoft.co.uk/go and 62 // https://www.tawesoft.co.uk/go/loader 63 package loader // import "tawesoft.co.uk/go/loader" 64 65 // Code generated by internal. DO NOT EDIT. 66 // Instead, edit DESC.txt and run mkdocs.sh.