libmill - Go-style concurrency in C

  •        200

Libmill is a library that introduces Go-style concurrency to C. It can execute up to 20 million coroutines and 50 million context switches per second. It also contains simple networking and file access library that allows users to quickly bootstrap application development.

https://github.com/sustrik/libmill

Tags
Implementation
License
Platform

   




Related Projects

libdill - Structured concurrency in C

  •    C

Libdill is a C library that makes writing structured concurrent programs easy. There is no interaction between threads. Each thread is treated as a separate process. Channels are always unbuffered. Coroutines can be canceled. Generally speaking, though, libdill's concurrency primitives are only a bit slower than basic C flow control statements. A context switch has been seen to execute in as little as 6 ns, with coroutine creation taking 26 ns. Passing a message through a channel takes about 40 ns.

thread-pool - Thread pool implementation using c++11 threads

  •    C++

A thread pool is a technique that allows developers to exploit the concurrency of modern processors in an easy and efficient manner. It's easy because you send "work" to the pool and somehow this work gets done without blocking the main thread. It's efficient because threads are not initialized each time we want work to be done. Threads are initialized once and remain inactive until some work has to be done. This way we minimize the overhead. There are many many Thread pool implementations in C++, many of them are probably better (safer, faster...) than mine. However, I belive my implementation is very straightforward and easy to understand.

yew - Rust framework for building client web apps

  •    Rust

Yew is a modern Rust framework inspired by Elm and ReactJS for creating multi-threaded frontend apps with WebAssembly. NEW! The framework supports multi-threading & concurrency out of the box. It uses Web Workers API to spawn actors (agents) in separate threads and uses a local scheduler attached to a thread for concurrent tasks.

Overdrive - ⚡️ Fast async task based Swift framework with focus on type safety, concurrency and multi threading

  •    Swift

Our apps constantly do work. The faster you react to user input and produce an output, the more likely is that the user will continue to use your application. As our applications grow in complexity, the more and more work needs to be done. You need to start thinking about how to categorize and optimize work, how to make that work more efficient, more optimized and finally, faster. In most cases that doesn’t end very well because you need to know a lot about concurrency, multithreading etc. - it’s a very complex field. You need to know all API specifics before you are able to write something. Overdrive was created as a result of that struggle. It is a framework that exposes several simple concepts which are made on top of complex system frameworks that enable multithreading, concurrency and most importantly, more speed.

Overdrive - ⚡️ Fast async task based Swift framework with focus on type safety, concurrency and multi threading

  •    Swift

Our apps constantly do work. The faster you react to user input and produce an output, the more likely is that the user will continue to use your application. As our applications grow in complexity, the more and more work needs to be done. You need to start thinking about how to categorize and optimize work, how to make that work more efficient, more optimized and finally, faster. In most cases that doesn’t end very well because you need to know a lot about concurrency, multithreading etc. - it’s a very complex field. You need to know all API specifics before you are able to write something. Overdrive was created as a result of that struggle. It is a framework that exposes several simple concepts which are made on top of complex system frameworks that enable multithreading, concurrency and most importantly, more speed.


pthreads - Threading for PHP

  •    PHP

This project provides multi-threading that is compatible with PHP based on Posix Threads. It can execute any and all predefined and user declared methods and functions asynchronously. It has built-in support of Synchronization, Synchronized Methods.

concurrencpp - Modern concurrency for C++

  •    C++

concurrencpp is a tasking library for C++ allowing developers to write highly concurrent applications easily and safely by using tasks, executors and coroutines. By using concurrencpp applications can break down big procedures that need to be processed asynchronously into smaller tasks that run concurrently and work in a co-operative manner to achieve the wanted result. concurrencpp also allows applications to write parallel algorithms easily by using parallel coroutines. concurrencpp is a task-centric library. A task is an asynchronous operation. Tasks offer a higher level of abstraction for concurrent code than traditional thread-centric approaches. Tasks can be chained together, meaning that tasks pass their asynchronous result from one to another, where the result of one task is used as if it were a parameter or an intermediate value of another ongoing task. Tasks allow applications to utilize available hardware resources better and scale much more than using raw threads, since tasks can be suspended, waiting for another task to produce a result, without blocking underlying OS-threads. Tasks bring much more productivity to developers by allowing them to focus more on business-logic and less on low-level concepts like thread management and inter-thread synchronization.

message-io - Fast and easy-to-use event-driven network library.

  •    Rust

message-io is a fast and easy-to-use event-driven network library. The library handles the OS socket internally and offers a simple event message API to the user. It also allows you to make an adapter for your own transport protocol following some rules, delegating the tedious asynchrony and thread management to the library. Managing sockets is hard because you need to fight with threads, concurrency, full duplex, encoding, IO errors that come from the OS (which are really difficult to understand in some situations), etc. If you make use of non-blocking sockets, it adds a new layer of complexity: synchronize the events that come asynchronously from the Operating System.

FiberTaskingLib - A library for enabling task-based multi-threading

  •    C++

This is a library for enabling task-based multi-threading. It allows execution of task graphs with arbitrary dependencies. Dependencies are represented as atomic counters. Under the covers, the task graph is executed using fibers, which in turn, are run on a pool of worker threads (one thread per CPU core). This allows the scheduler to wait on dependencies without task chaining or context switches.

node-ipc - Inter Process Communication Module for node supporting Unix sockets, TCP, TLS, and UDP

  •    HTML

a nodejs module for local and remote Inter Process Communication with full support for Linux, Mac and Windows. It also supports all forms of socket communication from low level unix and windows sockets to UDP and secure TLS and TCP sockets. This work is licenced via the DBAD Public Licence.

transient - A full stack, reactive architecture for general purpose programming

  •    Haskell

It's a bit mind bending in that it's like using a higher-level list monad, but it's very, very cool. For beginning Haskellers, what would be really useful is a visualisation of what happens when you do various distributed/parallel stuff. It's almost shocking how effortlessly you can run computations across threads/nodes. The cool part is the composability in the distributed setting. You can make higher-order monadic functions that allow you to compose & reuse a long chain of distributed transactions via wormhole and teleport. Another benefit is that the transaction becomes first class and you can see exactly what's going on in one place instead of distributing the logic across actors making the code equivalent to event callbacks, as you've stated.

Threading.Net : Multi threads, threadpool, backgroundworker windows form sample

  •    

Threading.Net, is a small windows form application that highlights the benefits of multithreaded programming by comparing in parallel, using progessbars, the same process running in single thread and in multi thread mode.

libuv - Cross platform Asynchronous I/O

  •    C

libuv is a multi-platform support library with a focus on asynchronous I/O. It was primarily developed for use by Node.js, but it’s also used by Luvit, Julia, pyuv, and others. Its feature includes event loop backed by epoll, kqueue, IOCP, event ports. Asynchronous TCP and UDP sockets, Asynchronous DNS resolution, Thread pool, Signal handling and lot more.

C++ Portable Types Library (PTypes)

  •    C++

PTypes is a simple alternative to the STL that includes multithreading and networking. It defines dynamic strings, character sets, lists and other basic data types along with threads, synchronization primitives, named pipes and IP sockets.

Managed Task Framework .NET Runtime

  •    DotNet

The MTF.NET Runtime is a multi-threaded scheduler designed to execute high-performance .NET applications efficiently across multiple CPU cores.

JCTools - Java Concurrency Tools for the JVM

  •    Java

Java Concurrency Tools for the JVM. This project aims to offer some concurrent data structures currently missing from the JDK.

threads.js - Easy to use, yet powerful multi-threading library for node.js and the browser.

  •    Javascript

Javascript thread library. Uses web workers when run in browsers and child processes when run by node.js. Also supports browsers which do not support web workers.You don't have to write the thread's code inline. The file is expected to be a commonjs module (so something that uses module.exports = ...), for node and browser.

OpenTop C++ Library

  •    C++

OpenTop is a cross-platform, high-performance C++ class library providing features similar to (and modelled on) core Java facilities such as resource management, networking, multi-threading, Unicode and XML parsing.






We have large collection of open source products. Follow the tags from Tag Cloud >>


Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.