![]() |
VOOZH | about |
dotnet add package magic.lambda.threading --version 17.2.0
NuGet\Install-Package magic.lambda.threading -Version 17.2.0
<PackageReference Include="magic.lambda.threading" Version="17.2.0" />
<PackageVersion Include="magic.lambda.threading" Version="17.2.0" />Directory.Packages.props
<PackageReference Include="magic.lambda.threading" />Project file
paket add magic.lambda.threading --version 17.2.0
#r "nuget: magic.lambda.threading, 17.2.0"
#:package magic.lambda.threading@17.2.0
#addin nuget:?package=magic.lambda.threading&version=17.2.0Install as a Cake Addin
#tool nuget:?package=magic.lambda.threading&version=17.2.0Install as a Cake Tool
This project contains all thread related slots for Hyperlambda. Threading in software development implies doing multiple things concurrently, scheduling CPU time for each of your threads, creating the illusion of having your computer doing multiple times concurrently. This concept is often referred to as "multi tasking" and is crucial for any modern operating system, and/or programming language. Hyperlambda contains several multi tasking related slots.
Forks the given lambda into a new thread of execution, using a thread from the thread pool. This slot is useful for creating "fire and forget" lambda objects, where you don't need to wait for the result of the execution before continuing executing the current scope.
fork
info.log:I was invoked from another thread
To understand how [fork] works, you can imagine your computer's CPU as a single river, running down hill, and at some point the river divides into two equally large rivers. This is referred to as "a fork". The analogy of the river becomes important for another reason, which is the understanding of that the total amount of water is still the same, it's only parted into two smaller rivers - Implying you cannot "do more" with multi tasking, you can only equally share the same amount of resources as you had before between two different tasks. Multi threading does not make your CPU faster, it only schedules your CPU's time on multiple things, doing these things concurrently. However, if you have multiple tasks where each individual task needs to wait for IO data, threading typically speeds up your application, since it can make multiple requests for IO simultaneously, and have other machines, and/or processes working in parallel.
Joins all child [fork] invocations, implying the slot will wait until all forks directly below it has finished executing, and automatically copy the result of the [fork] into the original node.
join
fork
http.get:"https://servergardens.com"
fork
http.get:"https://gaiasoul.com"
As an analogy for what occurs above, imagine the two rivers from our above [fork] analogy that forked from one larger river into two smaller rivers, for then again to join up and becoming one large river again further down.
Creates a named semaphore, where only one thread will be allowed to evaluate the same semaphore at the same time. Notice, the semaphore to use is defined through its value, implying you can use the same semaphore multiple places, by using the same value of your [semaphore] invocation.
semaphore:foo-bar
/*
* Only one thread will be allowed entrance into this piece of
* code at the same time, ensuring synchronized access, for cases
* where you cannot allow more than one thread to enter at the
* same time.
*/
In the above semaphore "foo-bar" becomes the name of your semaphore. If you invoke [semaphore] in any other parts of your Hyperlambda code, with "foo-bar" as the value, only one of your lambda objects will be allowed to execute at the same time. This allows you to "synchronize access" to shared resources, where only one thread should be allowed to access the shared resource at the same time. Such shared resources might be for instance files, or other things shared between multiuple threads, where it's crucial that only one thread is allowed to access the shared resource at the same time.
This slot will sleep the current thread for x number of milliseconds, where x is an integer value, expected to be passed in as its main value.
// Sleeps the main thread for 1 second, or 1000 milliseconds.
sleep:1000
Notice - This slot is typically releasing the thread back to the operating system, implying as
the current thread is "sleeping", it will not be a blocking call, and require ZERO physical operating
system threads while it is sleeping. This is true because of Hyperlambda's 100% perfectly async nature.
Magic is 100% Open Source and you can find the primary project GitHub page here.
The source code for this repository can be found at github.com/polterguy/magic.lambda.threading, and you can provide feedback, provide bug reports, etc at the same place.
The projects is copyright Thomas Hansen 2023 - 2024, and professionally maintained by AINIRO.IO.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 was computed. net5.0-windows net5.0-windows was computed. net6.0 net6.0 was computed. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 was computed. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 was computed. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 netcoreapp2.0 was computed. netcoreapp2.1 netcoreapp2.1 was computed. netcoreapp2.2 netcoreapp2.2 was computed. netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 netstandard2.0 is compatible. netstandard2.1 netstandard2.1 was computed. |
| .NET Framework | net461 net461 was computed. net462 net462 was computed. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 net481 was computed. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen40 tizen40 was computed. tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
Showing the top 1 NuGet packages that depend on magic.lambda.threading:
| Package | Downloads |
|---|---|
|
magic.library
Helper project for Magic to wire up everything easily by simply adding one package, and invoking two simple methods. When using Magic, this is (probably) the only package you should actually add, since this package pulls in everything else you'll need automatically, and wires up everything sanely by default. To use package go to https://polterguy.github.io |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 17.2.0 | 1,724 | 1/22/2024 |
| 17.1.7 | 362 | 1/12/2024 |
| 17.1.6 | 334 | 1/11/2024 |
| 17.1.5 | 353 | 1/5/2024 |
| 17.0.1 | 335 | 1/1/2024 |
| 17.0.0 | 562 | 12/14/2023 |
| 16.11.5 | 436 | 11/12/2023 |
| 16.9.0 | 396 | 10/9/2023 |
| 16.7.0 | 765 | 7/11/2023 |
| 16.6.12 | 398 | 7/5/2023 |
| 16.6.11 | 368 | 7/5/2023 |
| 16.6.10 | 269 | 7/5/2023 |
| 16.4.1 | 420 | 7/2/2023 |
| 16.4.0 | 549 | 6/22/2023 |
| 16.3.1 | 466 | 6/7/2023 |
| 16.3.0 | 464 | 5/28/2023 |
| 16.1.9 | 771 | 4/30/2023 |
| 15.10.11 | 597 | 4/13/2023 |
| 15.9.1 | 719 | 3/27/2023 |
| 15.9.0 | 574 | 3/24/2023 |