Git Product home page Git Product logo

cl-dispatch's Introduction

cl-dispatch is a Common Lisp wrapper around Grand Central Dispatch (aka libdispatch). It allows you to make lightweight queues and semaphores which allow the kernel to schedule your tasks across multiple cores.

It's not well documented yet, but the lisp API is in cffi.lisp, and there is also Apple's documentation of the C API.

The lisp functions look and behave like the block versions (EG, dispatch_sync) with lisp functions instead of blocks, but they are implemented using the function versions (EG, dispatch_sync_f), which means that certain functions (EG, dispatch_once) aren't available in our API.

NOTE: On at least CCL and SBCL, dispatching asynchronously (this includes dispatch-after, etc.) to any queue other than the main queue will likely result in a segfault after not too long. See CCL issue #911.

cl-dispatch's People

Contributors

renovate[bot] avatar sellout avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

djdrzzy scoiatael

cl-dispatch's Issues

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

This repository currently has no open or pending branches.

Detected dependencies

None detected


  • Check this box to trigger a request for Renovate to run again on this repository

Doesn’t load with current CCL, Quicklisp, and dispatch

I put a symlink to cl-dispatch in my Quicklisp local-projects directory, launched the CCL IDE (Clozure CL64.app, built from CCL trunk r16809, the latest current), and ran (ql:quickload :dispatch) in the Listener.

That resulted in the following error:

Read error between positions 927 and 1051 in «path»/cl-dispatch/grovel.processed-grovel-file.
> Error: The value :POINTER is not of the expected type (MEMBER :UNSIGNED-CHAR :UNSIGNED-SHORT :UNSIGNED-INT :UNSIGNED-LONG :UNSIGNED-LONG-LONG :CHAR :SHORT :INT :LONG :LONG-LONG).
> While executing: CFFI-GROVEL::CONVERT-INTMAX-CONSTANT, in process Listener(4).

I suspect that grovel.lisp may need to be adjusted for the very different dispatch type declarations present in a more modern operating system than the one for which this was originally written; I’m using the macOS Sierra 10.12 SDK.

It might also be possible to greatly simplify some of the definitions, and redesign grovel.lisp around the shape of the API definition rather than the declarations in the headers.

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.