Giter Club home page Giter Club logo

parallel_js_examples's Introduction

parallel_js_examples

Overview

This repo is a test repo for implementing lock-free data structures using SharedArrayBuffer Implementation includes code for Michael-Scott lock-free queue and Treiber's lock-free stack.

System Overview

There are practical difficulties while actually using shared memory within Javascript since native Javascript object are not addressable. So using Javscript alone with SharedArrayBuffer, it is almost impossible to create data strucutres that require pointer manipulation due to the lack of pointer support. Without pointer support, desiging and implementing lock-free data strucures code requires saving and swapping memory addresses. Usage of locks are limited to just primite types with Javascript and SharedArrayBuffer. However, it is possible to share memory between Javascript and WebAssembly by using SharedArrayBuffer. If we build lock-free datastructure using WebAssembly and share the datastructure using SharedArrayMemmory, it is possible to harness the power of lock-free data structure without writing most code in low level language.

Design

Lock-free data structures were implented in Rust and compiled using rustwasm. The resulting wasm code should be manipulated inorder to support SharedArrayMemmory that is actually sharable to external code.

parallel_js_examples's People

Contributors

isyangban avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.