{"id":16147715,"url":"https://github.com/bakercp/ofxtaskqueue","last_synced_at":"2025-03-18T18:32:02.520Z","repository":{"id":17213723,"uuid":"19982360","full_name":"bakercp/ofxTaskQueue","owner":"bakercp","description":"A multi-threaded task management system.","archived":false,"fork":false,"pushed_at":"2019-10-12T19:40:57.000Z","size":191,"stargazers_count":25,"open_issues_count":0,"forks_count":9,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-10-11T00:26:57.567Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bakercp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-20T13:43:22.000Z","updated_at":"2024-03-28T13:29:57.000Z","dependencies_parsed_at":"2022-09-01T12:21:21.810Z","dependency_job_id":null,"html_url":"https://github.com/bakercp/ofxTaskQueue","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bakercp%2FofxTaskQueue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bakercp%2FofxTaskQueue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bakercp%2FofxTaskQueue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bakercp%2FofxTaskQueue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bakercp","download_url":"https://codeload.github.com/bakercp/ofxTaskQueue/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221715737,"owners_count":16868610,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-10T00:27:03.600Z","updated_at":"2024-10-27T18:13:22.091Z","avatar_url":"https://github.com/bakercp.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"ofxTaskQueue\n============\n\n## Description\n\nTaskQueue executes and manages tasks in a multi-threaded environment.\n\n## Features\n\nThe `TaskQueue` wraps a `Poco::TaskManager`, `Poco::NotificationQueue` and a `Poco::ThreadPool` to simplify the process of multi-threaded task execution. A \"Task\" extends `Poco::Task` and is best suited for relatively short-lived\ntasks. That said, it simplifies the execution of long-running tasks by coalescing all thread callbacks into a notification queue that is distributed in FIFO order during the `update()` method, thus placing it in the main openFrameworks execution thread.\n\nThe `TaskQueue` makes effort to simplify the process of multi-threaded task execution by placing all Task event notifications within the main operating thread. This prevents the user from worrying about mutexes, thread locking and the associated complexities of accessing shared data from multiple threads. Additionally, by situating all event notifications in the main thread, the `TaskQueue` can be used to complete tasks that require execution in the primary execution thread (e.g. OpenGL calls, texture upload, etc).\n\nWhen returning data in a custom event, the user is encouraged to design a system wherein a final piece of process is delivered, ready to be quickly consumed by the listener. For example, if the user schedules web-tasks, the socket stream should be consumed, parsed and packaged before delivery in order keep the main thread moving quickly. Passing \"work\" back to the main thread defeats the purpose of a multi-threaded queue.\n\n`TaskQueue` has events for standard task callbacks, starting, cancellation, exceptions, progress and finishing. Additionally the user can define a custom \"Data\" callback that can be called at any time during thread execution. The user specifies the `DataType` class as a template parameter when creating the `TaskQueue`. This can be a base class. The user is responsible for handling special subclass behaviors.\n\nAdditionally, by overriding `handleUserNotifications` and adding additional events that extend BaseTaskEventArgs (just as TaskDataEventArgs currently does), users can handle an unlimited number of custom data types.\n\n## Getting Started\n\nTo get started, generate the example project files using the openFrameworks [Project Generator](http://openframeworks.cc/learning/01_basics/how_to_add_addon_to_project/).\n\n## Documentation\n\nAPI documentation can be found here.\n\n## Build Status\n\nLinux, macOS [![Build Status](https://travis-ci.org/bakercp/ofxTaskQueue.svg?branch=master)](https://travis-ci.org/bakercp/ofxTaskQueue)\n\nVisual Studio, MSYS [![Build status](https://ci.appveyor.com/api/projects/status/m85qm425sp177t5p/branch/master?svg=true)](https://ci.appveyor.com/project/bakercp/ofxtaskqueue/branch/master)\n\n## Compatibility\n\nThe `stable` branch of this repository is meant to be compatible with the openFrameworks [stable branch](https://github.com/openframeworks/openFrameworks/tree/stable), which corresponds to the latest official openFrameworks release.\n\nThe `master` branch of this repository is meant to be compatible with the openFrameworks [master branch](https://github.com/openframeworks/openFrameworks/tree/master).\n\nSome past openFrameworks releases are supported via tagged versions, but only `stable` and `master` branches are actively supported.\n\n## Versioning\n\nThis project uses Semantic Versioning, although strict adherence will only come into effect at version 1.0.0.\n\n## Licensing\n\nSee `LICENSE.md`.\n\n## Contributing\n\nPull Requests are always welcome, so if you make any improvements please feel free to float them back upstream :)\n\n1. Fork this repository.\n2. Create your feature branch (`git checkout -b my-new-feature`).\n3. Commit your changes (`git commit -am 'Add some feature'`).\n4. Push to the branch (`git push origin my-new-feature`).\n5. Create new Pull Request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbakercp%2Fofxtaskqueue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbakercp%2Fofxtaskqueue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbakercp%2Fofxtaskqueue/lists"}