Struct jlrs::runtime::async_rt::AsyncJulia
source · pub struct AsyncJulia<R> { /* private fields */ }
Expand description
A handle to the async runtime.
This handle can be used to include files and send new tasks to the runtime. The runtime shuts down when the last handle is dropped and all active tasks have completed.
Implementations§
source§impl<R> AsyncJulia<R>where
R: AsyncRuntime,
impl<R> AsyncJulia<R>where
R: AsyncRuntime,
sourcepub fn resize_queue<'own>(
&'own self,
capacity: usize
) -> Option<impl 'own + Future<Output = ()>>
pub fn resize_queue<'own>( &'own self, capacity: usize ) -> Option<impl 'own + Future<Output = ()>>
Resize the task queue.
No tasks are dropped if the queue is shrunk. This method return a future that doesn´t resolve until the queue can be resized without dropping any tasks.
sourcepub async fn resize_queue_async(&self, capacity: usize) -> Option<()>
pub async fn resize_queue_async(&self, capacity: usize) -> Option<()>
Resize the task queue.
See AsyncJulia::resize_queue
for more info, the only difference is that this is an
async method.
sourcepub fn resize_main_queue<'own>(
&'own self,
capacity: usize
) -> impl 'own + Future<Output = ()>
pub fn resize_main_queue<'own>( &'own self, capacity: usize ) -> impl 'own + Future<Output = ()>
Resize the task queue of the main runtime thread.
No tasks are dropped if the queue is shrunk. This method return a future that doesn´t resolve until the queue can be resized without dropping any tasks.
sourcepub async fn resize_main_queue_async(&self, capacity: usize)
pub async fn resize_main_queue_async(&self, capacity: usize)
Resize the task queue of the main runtime thread.
See AsyncJulia::resize_main_queue
for more info, the only difference is that this is an
async method.
sourcepub fn resize_worker_queue<'own>(
&'own self,
capacity: usize
) -> Option<impl 'own + Future<Output = ()>>
pub fn resize_worker_queue<'own>( &'own self, capacity: usize ) -> Option<impl 'own + Future<Output = ()>>
Resize the task queue of the worker threads.
No tasks are dropped if the queue is shrunk. This method return a future that doesn´t resolve until the queue can be resized without dropping any tasks.
sourcepub async fn resize_worker_queue_async(&self, capacity: usize) -> Option<()>
pub async fn resize_worker_queue_async(&self, capacity: usize) -> Option<()>
Resize the task queue of the worker threads.
See AsyncJulia::resize_main_queue
for more info, the only difference is that this is an
async method.
sourcepub fn task<A, O>(&self, task: A, res_sender: O) -> Dispatch<'_, A::Affinity>
pub fn task<A, O>(&self, task: A, res_sender: O) -> Dispatch<'_, A::Affinity>
Send a new async task to the runtime.
This method waits if there’s no room in the channel. It takes two arguments, the task and the sending half of a channel which is used to send the result back after the task has completed.
sourcepub fn register_task<A, O>(&self, res_sender: O) -> Dispatch<'_, A::Affinity>
pub fn register_task<A, O>(&self, res_sender: O) -> Dispatch<'_, A::Affinity>
Register an async task.
This method waits if there’s no room in the channel. It takes one argument, the sending half of a channel which is used to send the result back after the registration has completed.
sourcepub fn blocking_task<T, O, F>(
&self,
task: F,
res_sender: O
) -> Dispatch<'_, DispatchAny>where
for<'base> F: 'static + Send + FnOnce(GcFrame<'base>) -> JlrsResult<T>,
O: OneshotSender<JlrsResult<T>>,
T: Send + 'static,
pub fn blocking_task<T, O, F>(
&self,
task: F,
res_sender: O
) -> Dispatch<'_, DispatchAny>where
for<'base> F: 'static + Send + FnOnce(GcFrame<'base>) -> JlrsResult<T>,
O: OneshotSender<JlrsResult<T>>,
T: Send + 'static,
Send a new blocking task to the runtime.
This method waits if there’s no room in the channel. It takes two arguments, the first is
a closure that takes a GcFrame
and must return a JlrsResult
whose inner type implements
Send
. The second is the sending half of a channel which is used to send the
result back after the task has completed. This task is executed as soon as possible and
can’t call async methods, so it blocks the runtime.
sourcepub fn blocking_task_with_affinity<A, T, O, F>(
&self,
task: F,
res_sender: O
) -> Dispatch<'_, A>where
A: Affinity,
for<'base> F: 'static + Send + FnOnce(GcFrame<'base>) -> JlrsResult<T>,
O: OneshotSender<JlrsResult<T>>,
T: Send + 'static,
pub fn blocking_task_with_affinity<A, T, O, F>(
&self,
task: F,
res_sender: O
) -> Dispatch<'_, A>where
A: Affinity,
for<'base> F: 'static + Send + FnOnce(GcFrame<'base>) -> JlrsResult<T>,
O: OneshotSender<JlrsResult<T>>,
T: Send + 'static,
Send a new blocking task to the runtime.
This method waits if there’s no room in the channel. It takes two arguments, the first is
a closure that takes a GcFrame
and must return a JlrsResult
whose inner type implements
Send
. The second is the sending half of a channel which is used to send the
result back after the task has completed. This task is executed as soon as possible and
can’t call async methods, so it blocks the runtime.
sourcepub fn post_blocking_task<T, O, F>(
&self,
task: F,
res_sender: O
) -> Dispatch<'_, DispatchAny>where
for<'base> F: 'static + Send + FnOnce(GcFrame<'base>) -> JlrsResult<T>,
O: OneshotSender<JlrsResult<T>>,
T: Send + 'static,
pub fn post_blocking_task<T, O, F>(
&self,
task: F,
res_sender: O
) -> Dispatch<'_, DispatchAny>where
for<'base> F: 'static + Send + FnOnce(GcFrame<'base>) -> JlrsResult<T>,
O: OneshotSender<JlrsResult<T>>,
T: Send + 'static,
Send a new blocking task to the runtime and schedule it on another thread.
This method waits if there’s no room in the channel. It takes two arguments, the first is
a closure that takes a GcFrame
and must return a JlrsResult
whose inner type implements
Send
. The second is the sending half of a channel which is used to send the
result back after the task has completed. This task not called directly, but executed in
a spawned task.
sourcepub fn persistent<C, P, O>(
&self,
task: P,
handle_sender: O
) -> Dispatch<'_, P::Affinity>where
C: Channel<PersistentMessage<P>>,
P: PersistentTask,
O: OneshotSender<JlrsResult<PersistentHandle<P>>>,
pub fn persistent<C, P, O>(
&self,
task: P,
handle_sender: O
) -> Dispatch<'_, P::Affinity>where
C: Channel<PersistentMessage<P>>,
P: PersistentTask,
O: OneshotSender<JlrsResult<PersistentHandle<P>>>,
Send a new persistent task to the runtime.
This method waits if there’s no room in the channel. It takes a two arguments, the task
and a OneshotSender
to send a PersistentHandle
after the task’s init
method has
completed. You must also provide an implementation of Channel
as a type parameter.
This channel is used by the handle to communicate with the persistent task.
sourcepub fn register_persistent<P, O>(
&self,
res_sender: O
) -> Dispatch<'_, P::Affinity>
pub fn register_persistent<P, O>( &self, res_sender: O ) -> Dispatch<'_, P::Affinity>
Register a persistent task.
This method waits if there’s no room in the channel. It takes one argument, the sending half of a channel which is used to send the result back after the registration has completed.
sourcepub unsafe fn include<P, O>(
&self,
path: P,
res_sender: O
) -> JlrsResult<Dispatch<'_, DispatchMain>>
pub unsafe fn include<P, O>( &self, path: P, res_sender: O ) -> JlrsResult<Dispatch<'_, DispatchMain>>
Include a Julia file by calling Main.include
as a blocking task.
This method waits if there’s no room in the channel. It takes two arguments, the path to the file and the sending half of a channel which is used to send the result back after the file has been included.
Safety: this method evaluates the contents of the file if it exists, which can’t be checked for correctness.
sourcepub fn error_color<O>(
&self,
enable: bool,
res_sender: O
) -> Dispatch<'_, DispatchMain>
pub fn error_color<O>( &self, enable: bool, res_sender: O ) -> Dispatch<'_, DispatchMain>
Enable or disable colored error messages originating from Julia as a blocking task.
This method waits if there’s no room in the channel. It takes two arguments, a bool
to
enable or disable colored error messages and the sending half of a channel which is used
to send the result back after the option is set.
This feature is disabled by default.
Auto Trait Implementations§
impl<R> !RefUnwindSafe for AsyncJulia<R>
impl<R> Send for AsyncJulia<R>where
R: Send,
impl<R> Sync for AsyncJulia<R>where
R: Sync,
impl<R> Unpin for AsyncJulia<R>where
R: Unpin,
impl<R> !UnwindSafe for AsyncJulia<R>
Blanket Implementations§
source§impl<T> AttachParachute for T
impl<T> AttachParachute for T
source§fn attach_parachute<'scope, T: Target<'scope>>(
self,
target: T
) -> WithParachute<'scope, Self>
fn attach_parachute<'scope, T: Target<'scope>>( self, target: T ) -> WithParachute<'scope, Self>
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.