29 dépôts
Architectural patterns where background threads process independent tasks and return results to a main thread.
Distinct from Worker Thread Reuse: Distinct from limiting thread counts or UI messaging; focuses on the task distribution model.
Explore 29 awesome GitHub repositories matching software engineering & architecture · Worker Thread Patterns. Refine with filters or upvote what's useful.
Fuse is a JavaScript fuzzy search library and client-side search engine designed to index and query JSON data. It provides utilities for approximate string matching and ranking results by relevance, allowing applications to perform fast filtering and searching of datasets without a dedicated backend. The library distinguishes itself through a token-based search implementation that supports word-order independence and relevance weighting. It utilizes edit-distance scoring to handle typos and insertions, and employs a system of field weighting to prioritize matches in high-value data keys. The
Distributes search tasks across background worker threads to maintain main-thread responsiveness.
AR.js is a web-based augmented reality framework used to create immersive experiences directly in a browser using WebGL and WebRTC. It provides a cross-platform runtime that executes on mobile devices and head-mounted displays without requiring a dedicated application installation. The framework includes a marker-based engine for detecting physical patterns or barcodes to anchor digital overlays, a location-based tool for positioning entities via GPS coordinates, and a face tracking library for anchoring content to human facial features. It supports multi-marker simultaneous tracking, custom
Offloads heavy image processing and pattern matching to background threads to maintain high performance.
This project is a collection of Python scripts and tools designed for web scraping, browser automation, and large-scale data extraction. It provides a set of implementations for retrieving information from websites and private APIs, including tools for multimedia downloading and social media data archiving. The toolset includes specialized mechanisms for bypassing anti-scraping measures through IP proxy pool rotation and multi-threaded crawlers. It also features capabilities for simulating browser sessions to handle authentication, intercepting session cookies, and decrypting network payloads
Uses a thread-safe queue to distribute target URLs across multiple worker threads for accelerated collection.
sql.js is a serverless, in-memory SQL database engine that ports SQLite to WebAssembly for use within a web browser. It provides a JavaScript interface to initialize relational databases, execute SQL queries, and manage structured data without requiring a backend server. The project enables the import and export of database states using typed arrays, allowing in-memory data to be persisted as files. It supports high-precision integer retrieval via BigInt and utilizes prepared statements to increase execution speed and security. The engine includes capabilities for client-side data management
Employs worker thread patterns to offload heavy database computations and keep the user interface responsive.
jspaint is a web-based reimplementation of Microsoft Paint, built entirely in JavaScript to run in a browser. It recreates the classic desktop application by reverse-engineering the original Win32 API calls and event handling, rendering the entire interface onto an HTML5 canvas for pixel-perfect retro graphics. The project preserves the original file format compatibility with BMP, PNG, GIF, and JPEG, ensuring exact pixel data matches the legacy application. The application maintains a complete undo history stack using compressed image snapshots, and offloads computationally intensive image pr
Offloads computationally intensive image processing operations to background web workers for UI responsiveness.
Node.js is an open-source, cross-platform JavaScript runtime environment built on the V8 engine, designed for executing JavaScript code outside a web browser. It operates as a server-side JavaScript platform with an event-driven, non-blocking I/O architecture that enables building scalable network applications and web servers. The runtime integrates the CommonJS module system for synchronous module loading and the npm ecosystem for sharing and reusing packages. The platform provides comprehensive capabilities for web server development, including creating HTTP and HTTPS servers, managing HTTP
Ships a built-in worker_threads module for running JavaScript in parallel threads with shared memory.
oneAPI Threading Building Blocks (oneTBB)
Provides a thread-local task bypass that hands tasks directly to worker threads, skipping the global scheduling queue.
whs.js est un moteur de jeu 3D WebGL et un framework d'application extensible utilisé pour créer des expériences 3D interactives et des jeux basés sur navigateur. Il fournit une couche d'abstraction simplifiée sur le rendu WebGL bas niveau pour gérer les caméras, l'éclairage et l'environnement 3D global. Le framework utilise un graphe de scène 3D modulaire pour organiser les objets dans un système hiérarchique de composants. Il intègre une simulation physique multithreadée en utilisant des web workers pour exécuter les calculs en parallèle avec la boucle de rendu principale. Le système inclut une architecture de plugin modulaire qui permet l'extension de la logique d'application de base via un système enfichable. Il dispose également d'une initialisation de scène automatisée pour gérer la configuration du moteur de rendu et de l'environnement.
Runs heavy physics calculations in separate background threads using web workers to maintain high frame rates.
electron-vite est un système de build et un orchestrateur de bundle multi-processus qui utilise Vite pour compiler et bundler les processus main, preload et renderer pour les applications Electron. Il fonctionne comme un scaffolder d'application de bureau, fournissant des modèles pour intégrer divers frameworks frontend dans une structure de projet standardisée. Le projet se distingue par une protection du code source intégrée, utilisant un obfuscateur de bytecode V8 pour compiler JavaScript en bytecode et obfusquer les chaînes de caractères pour empêcher l'ingénierie inverse. Il gère également des architectures de bureau complexes en isolant les bundles et les chunks partagés à travers plusieurs fenêtres et contextes d'exécution. L'ensemble d'outils couvre un large éventail de capacités, incluant des pipelines de packaging automatisés pour des installateurs multi-plateformes, l'orchestration de serveur de développement avec remplacement de module à chaud (HMR), et la gestion des modules natifs et WebAssembly. Il prend en outre en charge le scoping d'environnement et la configuration de l'externalisation des modules binaires pour optimiser les builds de production.
Resolves worker imports into bundle paths during the build process for multi-threaded background execution.
Pagefind est un moteur de recherche pour site statique qui indexe les fichiers HTML pour fournir une expérience de recherche basée sur le navigateur sans avoir besoin d'un serveur backend ou d'une API. Il se compose d'un indexeur de recherche multilingue et d'un ensemble de composants d'interface utilisateur pré-construits et personnalisables pour le rendu des entrées de recherche et des listes de résultats. Le système est conçu pour le contenu mondial, utilisant un indexeur de recherche multilingue qui détecte les langues des pages et crée des bundles d'index indépendants pour fournir une recherche par radical (stemming) et des résultats spécifiques à la langue. Il optimise davantage les performances en utilisant un index compressé et en déchargeant l'exécution des requêtes vers un web worker pour garder l'interface utilisateur réactive. L'outil couvre un large éventail de capacités d'indexation et de récupération, incluant la capacité de traiter divers types de contenu comme les PDF et JSON, ainsi qu'un filtrage de recherche à facettes basé sur des métadonnées personnalisées. Il fournit des mécanismes pour le réglage de la pertinence des résultats, le découpage des sections de page pour une précision améliorée, et un kit d'interface utilisateur complet comprenant des modales, des panneaux de filtrage et la mise en surbrillance des termes. Le projet inclut des outils de développement pour le service de site local et des exports de terrain de jeu (playground) de diagnostic pour déboguer le comportement de l'index.
Offloads search processing and index parsing to a web worker to prevent blocking the main user interface thread.
Booster est un optimiseur de build et manipulateur de bytecode pour Android conçu pour réduire la taille des binaires, corriger les plantages au niveau système et améliorer les performances des applications. Il fonctionne comme un plugin de processus de build extensible qui modifie les fichiers de classe compilés et les artefacts de build pour injecter des correctifs de stabilité et des optimisations sans altérer le code source original. Le projet se différencie par une manipulation de bytecode de bas niveau pour corriger les bugs au niveau de l'OS et gérer les pools de threads pendant la phase de compilation. Il fournit également une boîte à outils de profilage de performance pour identifier les opérations bloquantes sur le thread principal et analyser les problèmes de stabilité liés aux ressources. L'outil couvre un large éventail de capacités d'optimisation de paquets, incluant la compression d'images pour PNG et WebP, la suppression des ressources redondantes et l'optimisation de l'index des ressources. Les fonctionnalités supplémentaires incluent le réglage des performances pour la gestion des threads, les écritures asynchrones de préférences et l'analyse statique pour scanner les artefacts de build afin de détecter les risques de sécurité et les goulots d'étranglement. Le système utilise une interface de fournisseur de services (SPI) pour l'intégration de plugins personnalisés et peut être exécuté comme une application autonome découplée de l'environnement de build principal.
Implements architectural patterns to offload blocking preference commits and operations to background worker threads.
gif.js est un encodeur GIF JavaScript et un quantificateur de couleurs côté client qui génère des fichiers GIF animés directement dans le navigateur web. Il fonctionne comme un exportateur de canvas HTML5 et un processeur d'image, permettant la création d'images animées à partir de sources web sans avoir besoin d'un serveur backend. La bibliothèque utilise des web workers pour décharger les tâches lourdes d'encodage d'image vers des threads en arrière-plan, ce qui empêche l'interface utilisateur du navigateur de se figer pendant le processus de génération. Cette architecture permet à l'outil d'agir comme un processeur d'image web worker pour la génération d'images dynamiques. Le système couvre des capacités pour convertir des frames vidéo en GIF et exporter des animations canvas. Il inclut des fonctionnalités pour gérer le timing des frames, configurer les propriétés de sortie globales telles que les dimensions et le nombre de boucles, et effectuer une quantification des couleurs basée sur une palette pour assurer la compatibilité GIF.
Employs a worker-thread pattern to distribute frame encoding tasks across multiple background threads.
Keras-js est un moteur d'inférence JavaScript et un framework de machine learning basé sur le navigateur conçu pour exécuter des réseaux neuronaux Keras pré-entraînés. Il permet l'inférence de modèle côté client dans les navigateurs web ou les environnements Node.js sans l'exigence d'un serveur backend. La bibliothèque utilise un accélérateur de tenseur WebGL pour mapper les opérations mathématiques vers le processeur graphique pour l'accélération matérielle. Pour maintenir la réactivité de l'interface utilisateur pendant les calculs lourds, elle incorpore un runtime d'inférence web worker qui exécute le traitement du réseau neuronal dans des threads en arrière-plan. Le système prend en charge le chargement de modèles via des fichiers de configuration JSON et des tenseurs de poids. Il gère les grands tableaux numériques en utilisant le stockage de texture WebGL pour faciliter l'accès mémoire à haute vitesse pendant l'exécution des tenseurs.
Executes neural network processing in background web worker threads to maintain user interface responsiveness.
wmr est un outil de développement d'applications web et un système de construction qui fonctionne comme un bundler de modules ES, un générateur de site statique et un serveur de développement local. Il fournit un environnement complet pour créer des applications web modernes, combinant un compilateur de production avec un serveur qui prend en charge le rechargement à chaud. Le projet se distingue par son approche intégrée des scripts d'arrière-plan et du routage, servant à la fois de bundler de service worker et d'outil pour le routage basé sur le système de fichiers. Il permet la génération de HTML statique via le pré-rendu et fournit une intégration native pour générer des web workers afin de gérer les calculs lourds. Le système couvre un large éventail de capacités d'automatisation de la construction, y compris la compilation à la demande, la gestion des requêtes basée sur des middlewares et un pipeline piloté par des plugins pour étendre la logique de construction. Il inclut également des utilitaires pour gérer les variables d'environnement, mapper les chemins d'importation et analyser la taille du bundle pour optimiser les actifs de production.
Compiles and bundles service worker scripts to enable offline asset management.
Text Embeddings Inference est un serveur d'inférence haute performance conçu pour héberger des modèles d'embedding de texte et de classification de séquences en tant qu'endpoints d'API scalables. Il fournit une API d'embedding vectoriel pour convertir le texte en représentations denses et un serveur de reranking cross-encoder pour noter la pertinence des séquences de documents par rapport à une requête. Le projet dispose d'un moteur d'inférence accéléré par GPU qui utilise le traitement par lots dynamique et des noyaux spécialisés pour maximiser le débit. Il offre une interface binaire haute performance via gRPC comme alternative au HTTP standard pour réduire la latence réseau et la surcharge de sérialisation. Le système couvre un large éventail de capacités, incluant le classement de similarité de documents, le reranking de texte multilingue et la classification de séquences pour prédire des catégories ou des sentiments. Il prend en charge divers environnements de déploiement, allant des conteneurs serverless auto-scalables aux installations isolées (air-gapped). L'accélération matérielle est disponible pour les GPU NVIDIA, les GPU AMD et Apple Metal.
Offloads text processing and sequence truncation to a separate pool of threads to prevent blocking the main inference loop.
Ce projet est une collection de démonstrations techniques et de prototypes qui présentent diverses API HTML5, capacités multimédias et implémentations de standards web. Il sert de bac à sable technologique frontend et de galerie de preuves de concept d'implémentation pour les fonctionnalités modernes des navigateurs. La collection inclut des vitrines spécialisées pour le multimédia HTML5, présentant la manipulation de flux audio, vidéo et multimédias en temps réel. Elle fournit également une série d'expériences axées sur le prototypage de capacités web pour vérifier la faisabilité technique et la prise en charge par les navigateurs dans des environnements réels. Le projet couvre un large éventail de domaines fonctionnels, incluant le rendu graphique basé sur le navigateur et les services de géolocalisation. Il démontre le stockage et la persistance de données côté client, la synchronisation de données en temps réel via des connexions bidirectionnelles, et la communication sécurisée entre fenêtres. Les capacités supplémentaires incluent l'exécution de tâches en arrière-plan, la mise en cache d'assets web et des éléments d'interface utilisateur interactifs tels que des implémentations de glisser-déposer.
Demonstrates background threading using Web Workers to execute heavy computations without freezing the UI.
Greenlet est un exécuteur asynchrone multi-threadé et un exécuteur de tâches de web worker. Il sert de wrapper d'exécution qui décharge les calculs lourds vers des workers en arrière-plan pour maintenir la réactivité de l'interface utilisateur et empêcher le thread d'exécution principal de se bloquer. Le projet inclut un gestionnaire d'objets transférables conçu pour déplacer de grands tampons de données entre les threads. Ce mécanisme évite la surcharge de la copie mémoire pour optimiser le transfert de données. La bibliothèque couvre la gestion des web workers, facilitant l'isolation des tâches asynchrones et le déchargement du thread principal.
Executes JavaScript in separate OS threads to ensure the main UI thread remains free for user interactions.
This project is a collection of implementation patterns and source code examples for building desktop applications using various Python interface libraries. It provides reference implementations and architectural patterns for multiple frameworks, including PyQt, PySide, Tkinter, Kivy, and Streamlit. The repository distinguishes itself by offering specialized examples for diverse interface types, ranging from professional desktop software and native windows to reactive web-based data dashboards and data science tools. It includes specific reference material for cross-platform UI patterns, such
Demonstrates architectural patterns for offloading heavy processing to background threads to maintain interface responsiveness.
Hive is a lightweight NoSQL key-value database written in pure Dart for local data persistence. It functions as a type-safe document store that allows for the saving and retrieval of complex data structures and custom objects. The system distinguishes itself through the use of custom adapters for object serialization and symmetric-key encryption to secure data at rest. For web environments, it provides a persistence layer that wraps IndexedDB and utilizes web workers. The project covers broad capability areas including container management, atomic transactional writes, and indexed data retri
Offloads database operations to background isolates to prevent blocking the main user interface thread.
Workerize est un chargeur de module web worker et un déchargeur de thread principal. Il fonctionne comme un wrapper de proxy asynchrone qui permet aux modules JavaScript de s'exécuter dans des workers d'arrière-plan, empêchant les gels de l'interface utilisateur du navigateur en déléguant les tâches coûteuses en calcul à des threads séparés. Le projet utilise une interface basée sur un proxy pour appeler des fonctions à l'intérieur d'un worker d'arrière-plan comme s'il s'agissait d'appels asynchrones locaux. Ce mécanisme permet l'exécution de modules dans des workers parallèles pour maintenir la réactivité du thread principal. Le système couvre l'exécution de modules asynchrones et l'intégration de web workers, en se concentrant sur l'optimisation du thread principal en déplaçant la logique lourde hors du thread d'exécution primaire.
Loads and runs JavaScript modules in Web Workers to move heavy logic off the main thread.