Category:Bordeaux Threads

From Rosetta Code
Library
This is an example of a library. You may see a list of other libraries used on Rosetta Code at Category:Solutions by Library.

Bordeaux-Threads is a Common Lisp library providing threading functionality across currently existing libraries. Threading isn't specified in the ANSI CL standard, therefore it's necessary to access implementation-specific functionality.

One common thing left unspecified as well is how special variables behave in relation to threading. Despite no mention in the standard, all implementations implementing threading treat special variables as thread-local variables [1] with some of them providing also truly global variables (see SBCL's SB-EXT:DEFGLOBAL for instance).

More information can be found at the project page.

Other library implementing threading is Portable-Threads, but it has omissions, e.g. there's no way to manually acquire or release locks without a WITH-LOCK macro or acquire them non-blockingly.

[1] But this gets tricky sometimes, e.g. there can only be 8192 thread-local variables ever created in SBCL, so using gensyms with PROGV is out of question. Also there's no way to garbage-collect thread-local bindings, so it doesn't matter if you only use few gensyms in PROGV at a time.

Pages in category "Bordeaux Threads"

The following 3 pages are in this category, out of 3 total.